Skip to main content

Full text of "BASIC programs for the Atari 600XL & 800XL"

See other formats


PROGRAMS 


FOR  THE 


BY  TIMOTHY  ORR  KNIOHT, 
PROORAMS  BY  DARREN  LqBATT 


No.  1726 
$14.95 


BASIC  PROGRAMS 

FOR  THE 

ATARI 

600XL  &  800XL 


BY  TIMOTHY  ORR  KNIGHT, 
PROGRAMS  BY  DARREN  LoBATT 


TAB 


TAB  BOOKS  Inc. 

BLUE  RIDGE  SUMMIT    PA    17214 


To  my  grandparents,  Wiltiam  T.  and  Willie  Lee  Rucker  and 
Detos  L.  and  Ruth  V.  Knight,  whose  heritage,  strength,  and 
wisdom  have  enriched  my  life. 


ATARI®  is  a  registered  trademark,  and  600XL/"  800XU™  and  AtariWriter™  are 
trademarks  of  Atari,  Inc. 


FIRST  EDITION 

FIRST  PRINTING 

Copyright  ©  1984  by  TAB  BOOKS  Inc. 

Printed  in  the  United  States  of  America 

Reproduction  or  publication  of  the  content  in  any  manner,  without  express 
permission  of  the  publisher,  is  prohibited.  No  liability  is  assumed  with  respect  to 
the  use  of  the  information  herein. 

Library  of  Congress  Cataloging  in  Publication  Data 

Knight,  Timothy  Orr. 

BASIC  programs  for  the  ATARI  600XL  and  800XL. 

Includes  index. 

1.  Atari  600XL  (Computer)— Programming.     2.  Atari 
800XL  (Computer)  — Programming.     3.  Basic  (Computer 
program  language)     I.  LaBatt,  Darren.     II.  Title. 
III.  Title:  B.A.S.I.C.  programs  for  the  Atah  six 
hundred  XL  and  eight  hundred  XL. 
QA76.8.A82K65     1984         001.64'25         83-24243 
ISBN  0-8306-0726-9 
ISBN  0-8306-1726-4  (pbk.) 

Cover  photograph  courtesy  of  Atari,  Inc. 


Contents 


Introduction  v 

1  Programming  with  Your  ATARI  Computer  1 

The  Format  of  This  Book— The  Programs— Using  This  Book 

2  Sound  and  Music  Programs  7 

Song  Library  — Sound  Maker— Sound  Effects  Library- 
Music  Creator- Using  Sounds  and  Music 

3  Educational  Software  27 

History  Quiz— Spelling  Tester— French  Tutor— States  and 
Capitals  — Learning  the  Easy  Way 

4  Math  and  Your  Computer  49 

Calculator  — Basic  Skills  Check-Up— Geometry  — Length 
Converter 

5  Graphics  Programs  for  the  ATARI  69 

Terms  You  Need  to  Know— Colorbar— Shapes— Drawer- 
Graph 

6  Games  85 

Guess  My  Number— Simon  Says  — Blackjack 

7  Creating  Your  Own  Programs  101 

The  Useful  Computer— Getting  and  Developing  the  Idea— 
Programming— Debugging— Making  Programs  and  Money 
with  Your  ATARI— The  Future  of  Computers 

Glossary  116 

Index  119 


other  TAB  Books  by  the  Authors 

No.  1706     Using  and  Programming  tlie  ADAM'",  including 
Ready-to-Run  Programs  (by  Timothy  Orr  Knight) 
No.  1 71 6    Basic  BASIC  Programs  for  the  ADAM™ 


Introduction 


This  book  is  designed  to  help  you  learn  more  about  your  ATARI 
600XL  or  800LX  home  computer,  provide  you  with  a  number  of 
programs  that  will  be  useful  to  you  now  or  in  the  near  future,  and 
demonstrate  to  you  how  a  program  evolves  from  start  to  finish. 
The  "method  of  teaching"  in  this  book,  however,  is  not  a  descrip- 
tion of  the  BASIC  language,  nor  is  it  a  summary  of  how  BASIC 
works  and  how  you  may  use  it.  This  book  is  a  collection  of 
programs  for  your  ATARI  home  computer.  By  using  these  pro- 
grams, you  will  learn  the  things  mentioned  above. 

When  you  are  reading  this  book,  you  "participate"  by  typing 
in  the  program  lines  as  they  are  shown  to  you.  Before  you  type  a 
new  program  into  your  ATARI,  type  NEW  followed  by  (as  al- 
ways) a  press  of  the  <RETURN>  key.  This  will  prepare  the 
computer  for  your  program.  Then  you  can  begin  reading  about 
the  program,  how  it  was  made,  and  what  the  lines  mean  as  you 
enter  them  into  the  machine.  When  you  have  finished  typing  in 
the  program ,  you  will  have  a  ready-to-run  piece  of  software.You 
will  also  know  how  that  program  works. 

By  the  time  you  reach  the  end  of  this  book,  I  hope  you  will 
have  accomplished  three  things: 

■  You  will  have  finished  typing  in  all  20  programs  contained  in 
this  book,  so  that  you  can  use  them  later  and  perhaps  modify 
them  for  your  own  purposes. 


■  You  will  understand  how  each  of  the  programs  works  and  how 
it  was  developed  into  a  working  piece  of  software. 

■  You  will  comprehend  the  method  by  which  a  program  is  made, 
from  idea  to  completion. 

As  you  read  this  book,  keep  in  mind  that  this  should  be  a 
learning  experience  as  well  as  an  entertaining  one.  You'll  soon 
discover  that  these  two  elements  combine  to  Increase  your 
experience  and  your  knowledge  of  the  ATARI  home  computers. 


Chapter  1 


Programming  with 
Your  ATARI  Computer 

This  is  a  book  designed  to  help  you  in  a  number  of  ways.  First  of 
all,  it  is  a  book  full  of  useful,  educational,  and  entertaining  pro- 
grams which  will  be  in  ready-to-run  form  once  you  have  pur- 
ased  this  book.  In  fact,  with  this  book  you  are  also  getting  a  large 
numt^er  of  programs  which  would  normally  cost  you  quite  a  bit  of 
money  at  a  software  store.  Second,  this  is  a  book  which  will  help 
teach  you  how  to  use  your  ATARI  home  computer  effectively, 
since  you  are  the  person  who  will  be  typing  in  the  programs, 
learning  about  the  programs  as  you  type  them  into  the  computer, 
and  running  these  programs  to  see  the  result  of  your  efforts. 
And,  last,  this  book  is  intended  to  teach  you  a  method  of  program- 
ming and  explain  how  you  can  make  your  own  programs— and 
perhaps  even  sell  them  for  a  profit. 

To  begin,  let's  take  a  look  at  the  setup  or  format  of  the 
programs  and  instructions  within  it.  This  format  is  easy  to  under- 
stand and  was  designed  to  help  programmers  at  any  level, 
beginning  or  more  advanced,  to  understand  the  contents  of  this 
book. 

THE  FORMAT  OF  THIS  BOOK 

This  book  centers  around  the  20  programs  it  contains.  Each 
is  thoroughly  explained;  you  will  find  three  types  of  explanations 
for  each  program.  First  of  all,  I  will  explain  the  purpose  of  pro- 
gram lines  as  I  introduce  them  to  you.  Then  you  should  type 

1 


them  into  the  computer.  Don't  use  the  program  until  you  have 
completely  finished  typing  It  into  the  computer,  and  understand 
how  it  works.  Another  explanation  provided  Is  the  explanation  of 
the  important  lines  within  the  program.  I  will  tell  you  the  main  sets 
of  program  lines  and  will  briefly  describe  the  purpose  of  that 
group  of  lines.  Finally,  I  will  describe  the  purpose  of  each  of  the 
variables  in  the  program. 

To  illustrate  this  more  clearly,  let's  assume  that  I  have  made 
a  very  simple  program  for  the  book,  as  shown  below: 

1 0  REM  THIS  PROGRAM  SAYS  HELLO  TO  A  PERSON 

20  PRINT'HI  THERE.  WHAT  IS  YOUR  NAME"- 

30  INPUT  NAMES 

40  PRINT'HELLO,  ";NAME$ 

50  GOTO  20 

This  is  an  extremely  simple  program,  but  it  will  serve  our 
purposes  for  this  illustration.  Now  that  I  have  created  this  pro- 
gram, I  would  describe  it  to  you  in  the  book  in  a  format  that  might 
look  like  this: 

This  is  a  simple  program  which  you  may  use  to  let  people 
become  familiar  and  feel  more  at  ease  with  the  ATARI  home 
computer.  To  begin  the  program,  type  in  the  REMark  statement 
to  state  the  purpose  of  the  program: 

10     REM  THIS  PROGRAM  SAYS  HELLO  TO  A  PERSON 

Next,  the  computer  will  print  its  greeting  and  accept  input  from  a 
person  to  find  out  their  name. 

20     PRINT  HI  THERE.  WHAT  IS  YOUR  NAME"- 
30     INPUT  NAMES 

Then  the  computer  will  greet  that  person  by  name  and  repeat 
the  whole  "welcoming  process"  by  going  back  to  line  20: 

40     PRINT  HELLO,  ";NAME$ 
50     GOTO  20 

You  might  want  to  expand  on  this  program  by  program- 
ming the  computer  to  get  more  information  about  the  person,  or 


make  comments  such  as  "YOU  HAVE  A  NICE  NAME"  or 
'YOUR  BIRTHDAY  IS  LATE  IN  THE  YEAR,  ISN'T  IT?"  based  on 
the  input  from  the  user. 

Important  Line  Numbers  in  HELLO 

10  Tells  the  purpose  of  the  program 

20-30  Greets  the  person  and  gets  name 

40  Greets  the  person  by  name 

50  Goes  back  to  line  20 

Important  Variables  in  HELLO 
NAMES        Receives  the  name  of  the  person 

From  the  above  example,  you  can  get  a  good  idea  as  to  how 
the  book  is  set  up.  You  wili  learn  how  the  program  was  made, 
what  purpose  each  of  the  lines  serves,  and  what  purpose  the 
variables  serve.  As  you  might  guess,  this  not  only  provides  you 
with  a  good  program,  which  you  can  easily  understand  and 
modify  for  your  own  purposes,  but  it  is  also  an  excellent  and 
enjoyable  way  to  learn  programming. 

THE  PROGRAMS 

To  give  you  an  idea  of  what  you  have  to  look  forward  to  in 
this  book,  here  are  the  19  other  programs,  with  a  brief  descrip- 
tion of  each. 

Sounds  and  Music 

Song  Library.  This  is  a  collection  of  four  songs  for  your  ATARI 
to  play,  including  "The  Caisson  Song,"  "Frere  Jacques,"  "My 
Bonnie,"  and  Chopin's  fanfas/e  impromptu. 

Sound  Maker.  Using  your  ATARI'S  four  voices,  you  can 
create  your  own  sounds  with  this  program. 

Sound  Effects  Library.  This  program  provides  a  collection  of 
effects  for  your  ATARI  to  play,  including  lasers,  alarms,  gun- 
shots, and  spaceship  blast-off. 

Music  Creator.  Writing  music  on  your  ATARI  Is  easier  with 
this  program,  which  allows  you  to  input  notes  and  their  lengths. 

Education 
French  Tutor.  This  is  a  tutorial  program  which  teaches  you 


and  tests  you  on  a  vocabulary  of  simple  French  words. 

States  and  Capitals,  Learn  states  and  capitals  by  matching 
them  in  this  program,  which  also  finds  information  for  you. 

History  Quiz.  Who  was  Herodotus?  Find  out  with  this  pro- 
gram, which  tests  you  on  various  events  and  people  in  history. 

Spelling  Tester.  Pick  the  incorrect  spelling  of  a  word  from  the 
possibilities  presented  by  this  useful  program. 

Mathematics 

Geometry.  Find  the  answer  to  16  kinds  of  geometry  prob- 
lems, such  as  areas  of  figures  and  volumes  of  solids,  with  this 
handy  program. 

Calculator.  Find  answers  to  basic  math,  trigonometric,  and 
square  root  problems  using  this  program,  the  "computer  cal- 
culator." 

Basic  Skills  Checkup.  Test  yourself  on  addition,  subtraction, 
and  multiplication. 

Length  Converter.  Use  this  program  to  convert  from  metric  to 
"standard,"  or  from  any  metric  or  standard  unit  to  any  other 
metric  or  standard  unit. 

Graphics 

Drawer.  Use  the  computer  screen  as  a  drawing  easel  for 
your  visual  creations. 

Graph.  The  computer  makes  a  line  graph  of  data  you  supply 
to  the  program. 

Shapes.  This  program  shows  you  some  of  the  shapes  the 
ATARI  can  make  and  describes  how  they  were  made. 

Colorbar.  Learn  the  effects  of  luminance  (brightness)  and 
hue  (color)  as  you  create  a  wide  assortment  of  colors  on  the 
screen. 

Games 

Blackjack.  Play  this  classic  against  the  computer. 

Guess  My  Number.  This  is  a  simple  game  which  teaches  you 
a  lot  about  how  the  computer's  random  number  generator  oper- 
ates. 

Simon  Says.  Memorize  as  many  colors  and  sounds  as  you 
can  to  repeat  to  the  computer. 

These  programs  will  get  you  off  to  a  good  start  on  making 
your  own  programs,  and  will  also  provide  you  with  a  nice  selec- 
tion of  software  to  use  and  enjoy  later. 


USING  THIS  BOOK 

Using  this  book  by  simply  typing  in  the  programs  and  run- 
ning them  is  simple  enough  (and  perfectly  all  right),  since  that  is 
the  main  point.  An  extension  of  this  concept,  however,  is  to  learn 
how  to  create  program  ideas  and  programs  yourself.  By  ex- 
amining these  programs  and  discovering  how  they  were 
created,  you  can  develop  your  own  system  for  creating  an  idea 
for  a  program,  developing  it  into  a  program,  and  fixing  any 
problems  ("bugs")  in  it,  so  that  it  can  be  a  useful  addition  to  a 
computer  system. 

While  you  are  studying  and  typing  in  these  programs,  write 
down  any  ideas  you  might  have  for  your  own  programs  and 
begin  working  on  them  whenever  you  feel  you  are  ready.  Your 
experience  with  your  programs  will  be  a  far  better  teacher  than 
this  book,  since  an  individual  is  his  or  her  own  best  teacher. 
Nevertheless,  I  hope  this  book  will  get  you  off  to  a  good  start,  so 
you  can  begin  using  your  own  creativity  and  logic  to  make  your 
computer  an  extension  of  your  mind. 


The  ATARI  600XL  computer  system  (courtesy  Atari,  Inc.) 


Chapter  2 


Sound  and  Music  Programs 

The  ATARI  600XL  and  800XL  home  computers  (Figs.  2-1  and 
2-2)  come  equipped  with  four  separate  voices  with  which  you 
can  create  music  and  sounds.  To  do  this,  you  specify  in  your 
programs  which  voice  (sound  channel)  you  want  to  use,  what 
sound  frequency  that  channel  should  produce,  and  what  the 
volume  of  that  sound  should  be.  In  this  chapter  we'll  examine 
and  create  four  different  programs  which  produce  sounds  and 
music,  and  which  let  you  program  different  songs  and  sounds 
into  your  ATARI. 

SONG  LIBRARY 

To  help  stir  your  interest  in  the  ATARI'S  power  to  create 
sounds  and  music,  here  is  a  program  which  will  play  any  one  of 
four  different  available  songs  for  you.  Simply  select  the  song  you 
want  to  hear  and  let  it  play. 

In  the  program,  the  ATARI  first  clears  the  screen  then 
displays  the  different  songs  which  can  be  played.  You  are  then 
allowed  to  give  the  computer  your  choice. 


100  GRAPHICS  O 

105  RESTORE 

110  POSITION  9,6 

120  PRINT" 1.  CAISSON  SONG" 


130  POSITION  9,7 

140  PRINT"2,  FRERE  JACQUES" 

150  POSITION  9,8 

160  PRINT"3.  FANTASIE  IMPROMPTU" 

170  POSITION  9,9 

180  PRINT"4.  MY  BONNIE" 

190  POSITION  9,10 

2U0  PRINT"5.  END" 

210  PRINT: PRINT: PRINT: INPUT  CHOICE 

Next,  the  screen  is  cleared  again  and  the  ATARI  goes  to  the 
song  you  wish  to  be  played  or,  if  you  selected  the  fifth  option,  the 
computer  ends  the  program  by  going  to  line  6000. 

220   GRAPHICS  O 

230   ON  CHOICE  GOTO  1000,2000,3000,4000,6000 

At  this  point  in  the  program,  the  computer  will  access  one  of 
the  four  routines  below  to  play  a  particular  song.  Note  that  the 
number  of  frequency/length  combinations  (note  data)  varies, 
since  the  lengths  of  the  songs  vary. 

1000  FOR  L00P1=1  TO  83 

1020  READ  A,B 

1030  SOUND  1, A, 14,15 

1040  FOR  LN=1  TO  B*1.5:NEXT  LN 

1050  SOUND  1,0,0,0 

1060  NEXT  LOOPl 

1U70  GOTO  100 

2000  FOR  L00P2=1  TO  83 

2Oi0  READ  A,B 

202O  NEXT  L00P2 

2O30  FOR  LOOPl=l  TO  64 

2040  READ  A,B 

8 


2U50  SOUND  1, A, 14, 15 

2060  FOR  LN=1  TO  B* 1,7: NEXT  LN 

2070  SOUND  1,0,0,0 

2080  NEXT  LOOPl 

2n90  GOTO  100 

3000  FOR  L00P2-1  TO  147 

3010  READ  A,B 

3020  NEXT  L00P2 

3O30  FOR  L00P1=1  TO  61 

3040  READ  A,B 

3050  SOUND  1, A, 14, 15 

3060  FOR  LN=1  TO  B*1.3:NEXT  LN 

3O70  SOUND  1,0, 0,0 

3080  NEXT  LOOPl 

3U90  GOTO  100 

4000  TIMES=0 

4010  FOR  L00P2=1  TO  208 

4020  READ  A,B 

4O30  NEXT  LOOP2 

4040  FOR  LOOPl =1  TO  60 

4045  IF  LOOP 1=35  THEN  BOSUB  4200 

4050  READ  A,B 

4060  SOUND  1, A, 14, 15 

4070  FOR  LN=1  TO  B* 1.2: NEXT  LN 

4OS0  SOUND  1,0,0,0 

4090  NEXT  LOOPl 

4100  TIME=TIMES+1 

4110  IF  TIMES=1  THEN  RESTORE: GOTO  4010 

4120  GOTO  100 

4200  FOR  REST=1  TO  70: NEXT  REST 

4210  RETURN 


The  data  below  contains  the  frequencies  and  the  lengths  of 
the  notes  in  all  of  the  songs: 

5000  DATA  81,50,96,50,81,100,81,50,96,50,81,100 
5010  DATA  81,50,96,50,81,75,72,25,81,50,96,50 
5020  DATA  81,100,96,50,91,50,81,50,91,100,108,50 
5030  DATA  81,50,91,100,108,50,125,300,81,50,96,50 
5040  DATA  81,100,81,50,96,50,81,100,81,50,96,50 
5050  DATA  81,75,72,25,81,50,96,50,81,100,96,50 
5060  DATA  91,50,81,50,91,100,108,50,81,50,91,100 
5070  DATA  108,50,125,300,81,50,81,50,63,100,63,100 
5080  DATA  81,100,81,50,81,50,72,50,64,50 
5090  DATA  63,50,72,50,81,100,63,50,63,100,64,50 
5100  DATA  72,50,64,50,63,50,72,50,53,300,81,50 
5110  DATA  81,50,63,100,63,100,64,100,72,50,64,50 
5120  DATA  63,50,72,50,81,100,96,50,91,50,81,50 
5130  DATA  91,100,108,50,81,50,91,100,108,50,125,300 
5200  DATA  125,50,108,50,96,50,125,50,126,50,108,50 
5210  DATA  96,50,125,50,96,50,91,50,81,100,96,50 
5220  DATA  91,50,81,100,81,27,72,27,81,27,91,27 
5230  DATA  96,50,125,50,81,27,72,27,81,27,91,27 
5240  DATA  96,50,125,50,125,50,162,50,126,100,126,50 
5250  DATA  162,50,125,100,91,50,81,50,72,50,91,50 
5260  DATA  91,50,81,50,72,50,91,50,72,50,68,50 
5270  DATA  62,100,72,50,68,50,62,100,62,27,53,27 
5280  DATA  62,27,68,27,72,50,91,50,62,27,53,27 
5290  DATA  62,27,68,27,72,50,91,50,91,50,125,50 
5300  DATA  91,100,91,50,125,50,91,100 
5400  DATA  81,200,72,50,81,50,63,50,53,50,47,200 
5410  DATA  40,200,45,100,47,100,53,100,47,50,63,50 
5420  DATA  81,400,72,200,68,50,72,50,53,50,47,50 

10 


5430  DATA  45 , 1 00 ,47,1 00 , 53 , 1 00 , 47 , 1 00 , 63 , 1 00 , 64 , 27 
5440  DATA  63,27,53,27,63,27,47,150,53,50,53,400 
5450  DATA  81,200,72,50,81,50,63,50,53,50,47,200 
5460  DATA  40,200,45,100,47,100,53,100,47,50,63,50 
5470  DATA  8 1 , 400 , 72 , 200 , 68 , 50 , 72 , 50 , 53 , 50 , 47 , 50 
5480  DATA  45,100,47,100,53,100,47,100,63,100,64,27 
5490  DATA  63,27,53,27,63,27,47,150,53,50,53,200,63,200 
5500  DATA  108,50,64,75,72,25,81,50,72,50,81,20 
5510  DATA  96,50,108,50,128,200,108,50,64,75,72,25 
5520  DATA  81,50,81,50,85,50,^1,50,72,250,108,50 
5530  DATA  64,75,72,25,81,50,72,50,81,50,96,50 
5540  DATA  108,50,128,200,108,50,96,50,72,50,81,50 
5550  DATA  85,50,96,50,85,50,81,250,108,150,81,150 
5560  DATA  96,150,72,100,81,50,85,50,85,50,85,50 
5570  DATA  85,50,96,50,85,50,81,100,72,50,64,150 
5580  DATA  108,150,81,150,96,150,72,100,81,50,85,50 
5590  DATA  85,50,85,50,85,50,96,50,85,50,81,200 

Finally,  line  6000  clears  the  screen  and  lets  the  program 
end. 

6000  GRAPHICS  O 

In  order  to  add  your  own  songs  to  this  program,  add  a  new 
option  to  the  menu,  compensate  for  your  addition  in  line  230  (the 
ON  .  .  .  GOTO  statement),  put  in  new  program  lines  to  read  and 
play  the  song,  and  add  the  DATA  statements  for  the  frequencies 
and  the  lengths  of  the  notes  in  your  song. 

Important  Variables  in  Song  Library 

CHOICE  Input  for  choice  of  song 

LOOP1  Reads  notes  for  songs 

L00P2  Reads  unneeded  notes 

LN  Delay  loop  for  note  length 

11 


A  Note  value  (period) 

B  Note  length 

TIMES  Used  to  play  "My  Bonnie"  twice 

REST  Rest  in  music 


Important  Lines  in  Song  Library 

100-200  Sets  up  menu 

21 0-230  Gets  choice  of  song 

1000-1070  Plays  Xaisson  Song" 

2000-2090  Plays  "Frere  Jacques" 

3000-3090  Plays  fantasie  impromptu 

4000-4210  Plays  '"My  Bonnie" 

5000-5590  Data 

6000  Ends  program 


SOUND  MAKER 

You  have  the  ability  to  create  unique  notes  and  sounds  on 
your  ATARI;  this  program  will  make  that  task  much  easier  for 
you.  This  program  allows  you  to  change  the  volume  and  the 
frequency  of  any  of  the  four  voices  on  the  ATARI,  and  you  will 
hear  all  of  them  playing  simultaneously.  In  addition,  you  will  see 
a  graphic  representation  of  the  frequencies  on  your  screen, 
along  with  the  volumes  and  the  frequencies  printed  at  the  bottom 
of  the  screen. 

In  order  to  use  this  program,  use  the  following  commands: 

q.w,e,r  Increase  the  frequency  of  voice  1,2.3,  or  4 

(respectively)  by  one  relative  unit  In  a  range 

from  0  to  255. 
Q,W.E.R         Decrease  the  frequency  of  voice  1 ,2,3,  or  4 

by  one  unit. 
a,s,d.f  Increase  the  frequency  of  voice  1,2,3,  or  4 

by  ten  units. 
A,S,D,F  Decrease  the  frequency  of  voice  1 ,2,3,  or  4 

by  ten  units. 
z,x,c,v  Increase  the  volume  by  one  relative  unit. 

Z,X,C,V  Decrease  the  volume  by  one  relative  unit. 

The  first  part  of  the  program  is  used  to  establish  the  vari- 
12 


ables  of  Sound  Maker  and  to  clear  the  value  at  location  764  in 
memory,  the  byte  at  which  information  from  the  keyboard  is 
registered. 

lOU   GRAPHICS  14 

no   PI  =255:  P2=255:  P3=255:  P4=255 

1 20   V 1 =0 : V2=0 : V3=0 : V4=0 

t?f)     FRKF  764,?Srj 

The  computer  begins  monitoring  the  keyboard.  Below  are 
the  IF-THEN  statements  for  increasing  or  decreasing  the  fre- 
quency of  a  voice  by  one. 

130  KEY=PEEK(764) 

140  IF  KEY^47  THEN  P1=P1+1:G0T0  1000 

150  IF  KEY=46  THEN  P2=P2+1:G0T0  1000 

160  IF  KEY=12  THEN  P3=P3+1:GGT0  1000 

170  IF  KEY=4U  THEN  P4=P4+1:G0T0  1000 

ISO  IF  KEY=111  THEN  P1=P1-1:G0T0  1000 

190  IF  K:EY=110  THEN  P2=P2-1:G0T0  1000 

200  IF  KEY=106  THEN  P3=P3-l:GaT0  lOOO 

210  IF  KEY=104  THEN  P4=P4-l:GaT0  1000 

Here  are  the  lines  which  increase  or  decrease  the  fre- 
quency of  a  voice  by  ten. 

220  IF  KEY=63  THEN  PI =P1 +10: GOTO  1000 

230  IF  KEY=62  THEN  P2=P2+10: GOTO  1000 

240  IF  KEY=58  THEN  P3=P3+10: GOTO  lOOO 

250  IF  KEY=56  THEN  P4=P4+10: GOTO  1000 

260  IF  KEY=127  THEN  P1=P1-10: GOTO  lOOO 

2/0  IF  KEY=126  THEN  P2=P2-10: GOTO  1000 

280  IF  KEY=122  THEN  P3=P3-10: GOTO  lOOO 

290  IF  KEY=120  THEN  P4=P4-10: GOTO  lOOO 

Finally,  here  are  the  lines  (in  addition  to  line  400)  which  are 

13 


used  to  increase  or  decrease  the  volume  of  a  voice.  These  make 
the  computer  go  back  to  line  130  to  repeat  the  "keyboard  scan- 
ning" process. 

300  IF  KEY=23  THEN  V1=V1+1:G0T0  1000 

310  IF  KEY-22  THEN  V2=V2+1:G0T0  1000 

320  IF  KEY=18  THEN  V3=V3+1:G0T0  1000 

330  IF  KEY=16  THEN  V4=V4+1:G0T0  1000 

340  IF  KEY=87  THEN  Vl=Vl-l;GOTO  1000 

350  IF  KEY=86  THEN  V2=V2-l:GOTO  1000 

3^0  IF  KEY=82  THEN  V3=V3-1:G0T0  1000 

370  IF  KEY=80  THEN  V4=V4-1:G0T0  1000 

4n0  GOTO  130 

I  then  programmed  the  computerto  check  the  values  for  the 
frequencies  and  volumes  of  all  of  the  voices  to  see  if  any  were 
^'out  of  range."  If  so,  the  computer  would  make  the  proper 
correction. 

1000  IF  Pl>255  THEN  PI =255: GOTO  130 

1010  IF  P2>255  THEN  P2=255:G0T0  130 

1020  IF  P3>255  THEN  P3=255:G0T0  130 

1030  IF  P4>255  THEN  P4=255:G0T0  130 

iO40  IF  Pl<2  THEN  P1=2:G0T0  130 

1050  IF  P2<2  THEN  P2-2:G0T0  130 

lOhO  IF  P3<2  THEN  P3=2:GOTa  130 

1070  IF  P4<2  THEN  P4=2:G0T0  130 

1U80  IF  Vl>15  THEN  V1=15:60T0  130 

1090  IF  V2>15  THEN  V2=15:G0T0  130 

1100  IF  V3>15  THEN  V3=15:G0T0  130 

lUO  IF  V4>15  THEN  V4=15:GOT0  130 

1120  IF  VKO  THEN  V  1=0:  GOTO  130 

1130  IF  V2<0  THEN  V2=0:60T0  130 

1140  IF  V3<0  THEN  V3=0:GOTO  130 
1150  IF  V4<0  THEN  V4=0:GOTO  130 

14 


The  ATARI  then  plays  the  sounds  through  all  four  of  its 
voices: 

2000  SOUND  0,255-Pl,14,Vl 
2100  SOUND  1,255-P2,14,V2 
2200  SOUND  2,255-P3, 14,V3 
2300  SOUND  3,255-P4, 14,V4 

Immediately  after  playing  the  sounds,  the  ATARI  displays 
the  graphics  representing  the  frequencies  of  the  sounds. 

2500  COLOR  O 

2510  PLOT  25,0 

2520  DRAWTO  25 , (255-Pl > /2 

3000  COLOR  1 

3010  PLOT  25,159 

3020  DRAWTO  25,(255-Pl)/2 

3100  COLOR  O 

3110  PLOT  30,0 

3120  DRAWTO  30 , 160- (VI ^ 10) 

3200  COLOR  3 

3210  PLOT  30,159 

3220  DRAWTO  30, 160- (VI  *  10) 

3300  COLOR  O 

3310  PLOT  50, O 

3320  DRAWTO  50, (255-P2) /2 

3400  COLOR  1 

3410  PLOT  50,159 

3420  DRAWTO  50, (255-P2) /2 

3500  COLOR  O 

35 lO  PLOT  55,0 

3520  DRAWTO  55 , 1 60- ( V2> 10) 

15 


3600  COLOR  3 

3610  PLOT  55,159 

3620  DRAWTO  55 , 160- ( V2^ 10) 

3/0O  COLOR  0 

37 lO  PLOT  85,0 

3720  DRAWTO  85 , (255-P3) /2 

3800  COLOR  1 

3810  PLOT  85, 159 

3820  DRAWTO  85 , (255-P3) /2 

390O  COLOR  O 

3910  PLOT  90,0 

3920  DRAWTO  90 , 160- < V3>10) 

4000  COLOR  3 

4O10  PLOT  90,159 

4020  DRAWTO  90 , 1 60- ( V3  * 1 0 ) 

410O  COLOR  O 

4110  PLOT  115,0 

4120  DRAWTO  1 15, (255-P4) /2 

4200  COLOR  1 

4210  PLOT  115,159 

4220  DRAWTO  1 15, (255-P4> /2 

430O  COLOR  O 

4310  PLOT  120,0 

4320  DRAWTO  120 , 160- ( V4* lO) 

4400  COLOR  3 

4410  PLOT  120, 159 

4420  DRAWTO  120 , 160- ( V4*10) 

Last,  the  computer  shows  the  values  of  the  frequencies  and 
the  volumes: 

4500  PRINT 

5000  PRINT  255-Pl,255-P2,255-P3,255-P4 

16 


5010  PRINT  V1,V2,V3,V4 
6000  GOTO  125 


Working  with  this  program  will  produce  some  interesting 
effects.  See  if  you  can  create  certain  tones  and  special  sound 
effects  for  your  programs  by  using  this  utility. 


Important  Variables  in  Sound  Maker 

P1  ,P2,P3,P4      Period  values  for  voices  one  to  four 
V1  ,V2,V3,V4      Volumes  for  voices  one  to  four 
KEY  Keyboard  input 

Important  Lines  in  Sound  Maker 

100-130  Initialization 

1 40-400  Sees  which  key  is  pressed  and  adds  or 

subtracts  from  voice  or  period 
1 000-1 1 50  Makes  sure  new  values  are  not  out  of 

range 
2000-2300  Plays  four  sounds 

2500-4420  Makes  graphs  for  period  and  volume  of  all 

four  voices 
5000-5010  Prints  period  value  and  volume  value 

6000  Goes  back  to  get  more  keyboard  input 

SOUND  EFFECTS  LIBRARY 

For  some  "prepackaged"  sounds,  here  is  a  selection  of 
several  sound  effects.  Simply  select  the  one  you  would  like  to 
hear,  and  press  S  when  you  want  to  stop  listening  to  the  sound. 

First,  the  screen  is  cleared,  the  menu  is  displayed,  and  your 
ATARI  lets  you  Input  your  choice. 

50  GRAPHICS  O 

100  POSITION  9,6 

110  PRINT"SOUND  EFFECTS" 

120  POSITION  6,9 

130  PRINT" 1.  LASER  FIRE" 

140  POSITION  6,10 

150  PRINT"2.  ALARM" 

17 


160  POSITION  6, 11 

170  PRINT"3,  SPACESHIP  THRUST" 

180  POSITION  6, 12 

190  PR INT "4.  REBOUND  NOISE" 

200  POSITION  6,13 

210  PRINT"5.  GUN  SHOT" 

220  POSITION  6,14 

230  PRINT"6.  RANDOM  NOISE" 

240  POSITION  6, 15 

250  PRINT"/.  END" 

260  PRINT:PRINT:PRINT"HIT  'S'  TO  END  SOUND" 

280  PRINT: PRINT: INPUT  CHOICE 

Next,  the  computer  goes  to  the  proper  line  number  for  your 
choice  and  plays  the  sound  you  want  to  hear. 

290  ON  CHOICEl  GOTO  300,400,500,600,700,800,900 

3nO  FOR  LOaPl=l  TO  50 

310  SOUND  l,L00Pl+5, 14,15 

320  NEXT  LOOPl 

330  SOUND  1,0,0,0 

340  FOR  WAIT=1  TO  150:NEXT  WAIT 

350  GOSUB  3000 

360  GOTO  300 

400  PERI0D=255 

410  FOR  LOOPl =1  TO  50 

420  SOUND  1, PERIOD, 14, 15 

425  PER  I  OD==PER  I OD-5 

430  NEXT  LOOPl 

440  SOUND  1 ,0,0,0 

450  FOR  WAIT^l  TO  150: NEXT  WAIT 

460  GOSUB  3000 

18 


470   GOTO  400 

500   FOR  L00P1=1  TO  100 

510   SOUND  1,120,8,15 

520   NEXT  LOOPl 

530   SOUND  1,0,0,0 

540   GOSUB  3000 

550   GOTO  500 

600   V0L=15 

610   FOR  L00P1=1  TO  15 

620   SOUND  1,155, 14, VOL 

630   V0L=V0L-1 

640   NEXT  LOOPl 

650   SOUND  1,0,0,0 

660   FOR  WAIT=1  TO  150:NEXT  WAIT 

670   GOSUB  3000 

680   GOTO  600 

700   V0L=15 

710   FOR  L00P1=1  TO  3 

720   SOUND  1,1 50, 8, VOL 

730   NEXT  LOOPl 

735   VOL=7 

750   SOUND  1,255,6,V0L-L00P2 

760   NEXT  L00P2 

770   SOUND  1,0,0,0 

775   FOR  WAIT=1  TO  150:NEXT  WAIT 

780   GOSUB  3000 

790   GOTO  700 

800   RN1  =  INT (255*RND  < 1) +1 ) 

810   RN2=INT( (28*RND<l)+l)/2) 

820   RN3=INT ( 15*RND  < 1 ) +1) 


19 


830  SOUND  1,RN1,RN2,RN3 

840  GOSUB  300O 

850  GOTO  800 

900  GRAPHICS  0:END 

The  last  part  of  the  program  monitors  the  keyboard  for  the 
"S"  key.  If  it  is  pressed,  the  computer  stops  playing  the  sound 
and  returns  to  the  menu.  If  not,  the  ATARI  keeps  on  playing. 

3000  IF  PEEK  <  764  )=ib2  THEN  POKE  764  ,255:  SOUND  i,  0,0,0: 
GOTO  100 
3010  RETURN 

Important  Variables  in  Sound  Effects  Library 

CHOICE  User's  choice  of  sound 

LOOP1  Used  to  make  sounds 

WAIT  Delay  loop 

PERIOD  The  frequency  value 

VOL  Volume 

L00P2  Makes  sound  for  second  part  of  gunfire 

RN1  Random  value  for  period 

RN2  Random  value  for  distortion 

RN3  Random  value  for  volume 


Important  Lines  in  Sound  Effects  Library 

50-260  Set  up  menu 

280-290  Get  choice,  go  to  sound 

300-360  Creates  laser  fire  sound 

400-470  Creates  alarm  sound 

500-550  Spaceship  thrust 

600-680  Rebound  noise 

700-790  Gunshot  noise 

800-850  Random  noise 

900  Ends  program 

3000-3010  Turns  off  sound  and  resets  the  keyboard 

MUSIC  CREATOR 

Not  only  may  you  want  to  create  certain  sounds  on  your 
computer,  you  might  also  want  to  write  music  with  your  ATARI. 

20 


fi /=V r- 

u 

1 

E 

/Iv 

n 

C 

(( ) 

A 

cr 

r 

F 

^    c 

D 

SYMBOL 

NOTE 

VALUE 

o 

Whole 

4  beats 

c 

Half 

2  beats 

m 

Quarter 

1  beat 

\ 
d 

Eighth 

V2  beat 

} 

Sixteenth 

V'4  beat 

F-ig.  2-1 .  Musical  notes. 

The  following  program  will  allow  you  to  enter  notes  and  their 
lengths,  and  then  chain  the  notes  together  to  make  a  song. 

Music  creator  first  establishes  the  variables  it  is  going  to 
use,  shows  Its  title,  and  lets  you  begin  inputting  your  song.  To 
input  a  note,  type  in  a  four-character  code  consisting  of: 

1)  A  note  name  from  the  set  A,B,C,D,E,F,G. 

2)  A  blank  character  if  the  note  is  natural,  or  a  sharp  sign 
(  * )  if  it  is  sharp. 

3)  The  octave  level,  a  number  from  1  to  3  representing  how 
■'high"  the  octave  is. 

4)  The  length  of  the  note,  which  can  be  S  (sixteenth  note), 
E  (eighth),  Q  (quarter),  H  (half),  or  W  (whole  note). 

The  notes  available,  as  well  as  acomparison  of  theirtime  values, 
are  shown  in  Fig.  2-1. 

50         DIM    INP*(5):DIM    A* (3) 
^0  DIM    P<90):DIM    L(90) 


21 


70  DIM  L*(3) 

100  GRAPHICS  O 

110  POSITION  10,4 

120  PR I NT "MUSIC  CREATOR" 

130  NM=1 

135  PRINT: PRINT 

140  INPUT  INP* 

This  section  of  the  program  lets  your  ATARI  accept  two 
other  commands— PLAY,  which  will  play  your  song,  and  END, 
which  will  stop  the  program  completely. 

150   IF  INP*="PLAY"  THEN  NM=NM-1:G0T0  lOOO 
160   IF  INP*="END"  THEN  GRAPHICS  OrEND 

At  this  point,  the  computer  will  compare  your  note  with  the 
notes  in  the  DATA  statements  at  the  end  of  the  program  to  find 
out  the  frequency  of  the  note  you  selected. 

170  READ  A*,B,C 

200  IF  A*=INP*(1,2)  THEN  300 

210  GOTO  150 

300  D=VAL(INP*(3,3) ) 

310  IF  BOD  THEN  GOTO  150 

^O  P(NM)=C 

500  L*=INP*(4,4) 

Then  your  ATARI  determines  the  length  of  the  note  you 
selected: 

510  IF  LS="S"  THEN  L=25 

520  IF  L^="E"  THEN  L=50 

530  IF  LS="Q"  THEN  L=100 

540  IF  LS="H"  THEN  L==200 

550  IF  L*="W"  THEN  L=400 

560  L(NM)=L 

22 


To  let  you  know  what  you  have  just  entered,  the  connputer 
will  play  the  note.  It  will  then  go  back  to  the  INPUT  routine  so  you 
can  continue  supplying  notes  until  you  are  ready  to  PLAY  the 
song. 

600  SOUND    1,P(NM) ,14, 15 

610  FOR    L00P1  =  1    TO    L<NM)!NEXT    LC30P1 

620  SOUND  1,0,0,0 

700  NM=NM+1 

710  RESTORE 

720  GOTO  140 

When  you  are  ready  to  play  the  song,  this  routine  will  do  just 
that. 

1000  FOR  L00P2=1  TO  NM 

1010  SOUND  1,P<L00P2) ,14,15 

1020  FOR  L00P3=1  TO  L (L00P2) : NEXT  L00P3 

1030  NEXT  L00P2 

2000  BOUND  1 ,0,0,0 

2010  NM=NM+1 

2020  GOTO  140 

Here,  at  last,  is  the  data  for  the  notes  you  might  use  in  the 
program: 

5000  DATA  C  , 1 ,251 ,C# , 1 , 230,D  ,1,217 
5010  DATA  D#,1,204,E  ,1,193,F  ,1,182 
5020  DATA  F#, 1,173,6  , 1 , 162,G#, 1 , 153 
5030  DATA  A  , 1 , 144, A#, 1 , 136,B  ,1,128 
5040  DATA  C  , 2, 126 ,C#,2, 1 14,D,  2, IDS 
5050  DATA  D#,2,102,E  ,2,96,F  ,2,91 
5060  DATA  F#,2,85,G  , 2,81 ,G#,2, 76 
5070  DATA  A  , 2, 72, A#, 2,68,B  ,2,64 
5080  DATA  C  ,3,63,C#,3,57,D  ,3,53 

23 


5090  DATA  D#,3,50,E  ,3,47,F  ,3,45 
5100  DATA  F#,3,42,G  ,3,40,G#,3,37 
5110  DATA  A  ,3,35,A#,3,33,B  ,3,31 

See  if  you  can  construct  a  routine  to  save  your  songs  to  the 
disk.  If  you  would  like  to  add  more  songs  to  the  "Song  Library" 
program  earlier  in  this  chapter,  add  the  songs  you  create  with 
this  program. 

Important  Variables  in  Music  Creator 

INP$  input  a  note  of  music 

A$  The  note  frequency 

P(X)  The  period  for  each  note 

L(X)  The  length  of  each  note 

L$  The  input  for  the  note  length 

NM  Number  of  the  note 

B  Data  for  octave  number 

C  Data  for  frequency  value 

D  Numeric  value  of  octave  number 

L00P1  Delay  loop  for  making  note  length 

LOOP2  Used  for  playing  song 

LOOPS  Another  delay  loop 

Important  Lines  in  Music  Creator 

50-135  initialization 

140  Gets  input 

1 50-1 60         Checks  to  see  if  user  wants  to  play  song  or  end 

program 
170-310  Finds  appropriate  data 

400  Gets  period 

500-560  Gets  note  length 

600-620  Plays  note  just  input 

700-720  Goes  to  get  next  note  from  user 

1000-2020      Plays  song 
5000-5110      Data  for  notes,  octave,  and  period  value 


USING  SOUNDS  AND  MUSIC 

With  four  voices  available  on  the  ATARI,  this  computer 
certainly  is  capable  of  producing  complex  pieces  of  music  and 
interesting,  unusual  sounds  for  your  programs.  Add  as  many 
sounds  as  you  can  to  your  games  and  utilize  songs  and  sounds 

24 


in  educational  programs.  You'll  probably  find  that  creating  these 
is  one  of  the  most  entertaining  aspects  of  programming  your 
ATARI  computer. 


7^76  ATARI  800XL  computer  system  (courtesy  Atari,  Inc.) 


25 


Chapter  3 


Educational  Software 

Computers  are  often  said  to  be  one  of  the  best  tools  available  for 
education.  This  may  well  be  true,  because  computers  are  the 
most  patient  teachers  you  could  ever  find.  They  can  remember 
large  amounts  of  data,  recite  it  accurately,  and  accept  input  from 
any  number  of  students  as  many  times  as  needed.  Computers 
don't  have  some  of  the  "human"  qualities  that  real  teachers  do, 
but  they  are  excellent  at  the  kinds  of  work  which  are  repetitive 
and  probably  bonng  for  people.  Moreover,  the  student  can  con- 
tinue to  work  with  a  program  until  he  or  she  memorizes  the 
information  presented  by  the  computer. 

In  this  chapter  we'll  be  looking  at  four  different  programs 
which  focus  on  education.  You  can  easily  expand  and  modify 
these  programs  for  your  own  use  and  for  the  academic  level  for 
the  people  using  the  programs.  However,  these  programs  are 
fully  functional  as  they  now  exist;  you  are  sure  to  learn  some- 
thing from  using  these  programs-not  only  about  history  or 
French  or  geography  or  spelling,  but  also  about  programming 
your  ATARI  home  computer. 

HISTORY  QUIZ 

This  program  utilizes  a  large  quantity  of  data  by  randomly 
selecting  several  pieces  of  information  which  relate  to  history. 
Then  it  asks  you  which  one  particular  part  of  history  is  usually 
^elated  to  another  part.  With  this  program,  the  computer  can 

27 


teach  you  more  about  history  by  quizzing  you  on  a  variety  of 
subjects  and  letting  you  learn  by  trial  and  error. 

The  first  part  of  the  progrann  sets  up  the  variables  and  clears 
the  screen. 

10  DIM  A*  (30):  DIM  Ei*(30) 

20  DIM  C^ (30): DIM  D*<30) 

30  DIM  E*<n  :DIM  Ft^  (  1  ) 

40  DIM  ANSWER* (30) 

50  SC=0:TIMES=0 

100  GRAPHICS  0 

The  ATARI  waits  until  you  are  ready  to  begin  and  then 
clears  the  screen  once  nnore: 

no  POSITION  12,4 

120  FRINT"HISTORY  QUIZ" 

130  POSITION  7,8 

140  PRINT"HIT  ANY  KEY  TO  CONTINUE" 

150  INPUT  E* 

200  GRAPHICS  0 

At  this  point  the  conriputer  reads  the  data  from  the  end  of  the 
progrann  and  selects  a  random  number  from  1  to  6.  This  random 
number  will  determine  the  order  in  which  the  aspects  of  history 
will  be  printed— so  you'll  never  know  which  person  or  event  is 
associated  with  another  person  or  event  until  you  are  familiar 
with  the  facts  in  this  program. 

205  TIMES=TIMES+1 

210  READ  A:t,B*,C:$,D* 

220  POSITION  7,4 

230  PRINT  AS 

240  POSITION  7,6 

250  PRINT" IS  MOST  ASSOCIATED  WITHs" 

300  RAN=INT (6*RND ( 1 ) +1 ) 

305  POSITION  2, 10 

28 


The  computer  then  prints  out  the  data  and  goes  to  the 
routine  at  line  700,  which  will  accept  your  input. 


310   IF  RAN==1  THEN  400 

320   IF  RAN=2  THEN  450 

330   IF  RAN=3  THEN  500 

340   IF  RAN=4  THEN  550 

350   IF  RAN=5  THEN  600 

360   IF  RAN=6  THEN  650 

400  PRINT  B* 

410  PRINT  C* 

420  PRINT  D* 

430  GOTO  700 

450  PRINT  C* 

460  PRINT  B* 

470  PRINT  D* 

480  GOTO  700 

SOO  PRINT  D* 

510  PRINT  C» 

520  PRINT  B* 

530  GOTO  700 

550  PRINT  B* 

560  PRINT  D* 

570  PRINT  C* 

580  GOTO  780 

600  PRINT  C* 

610  PRINT  D* 

620  PRINT  B* 

630  GOTO  700 

650  PRINT  D* 

660  PRINT  B* 


29 


670   PRINT  C* 
680   GOTO  700 

Here  the  computer  accepts  your  input  and  checks  to  see  if  it 
is  correct  or  not.  Then  the  ATARI  asks  if  you  would  like  to 
continue  with  another  question. 

700  POSITION  7,15 

710  INPUT  ANSWER* 

720  IF  ANSWER^OBt  THEN  800 

730  PRINT: PRINT"CORRECT" 

740  SC-SC+1 

750  GOTO  900 

800  PRINT: PRINT" INCORRECT  -  THE  RIGHT  ANSWER  IS  " ; B* 

810  GOTO  900 

900  IF  TIMES=22  THEN  2000 

910  PRINT"DO  YOU  WANT  TO  CONTINUE-^" 

920  INPUT  F* 

930  IF  F:|:="Y"  THEN  200 

Finally,  here  are  the  data  for  the  program.  Remember  not  to 
put  any  extra  spaces  in  the  data,  since  that  might  make  the 
program  malfunction. 

1000  DATA  HERODOTUS, FATHER  OF  HISTORY , TROJAN  WAR, ATTACK 

ON  ROME 

1010  DATA  WATERLOO, NAPOLEON, LORD  NELSON, DUKE  OF  WELLINGTON 

1020  DATA  ANTIETAM, CIVIL  WAR , GREECE , WORLD  WAR  II 

1030  DATA  HOMER, POETRY, SUBMARINE, JET  PLANE 

1040  DATA  HENRY  FORD , INDUSTRIAL  1ST , PRESIDENT , FAMOUS 
HISTORIAN 

1050  DATA  HANNIBAL, ELEPHANTS, BABYLON, PEOPLE  EATERS 
1060  DATA  HAMMURABI, BABYLON, ELEPHANTS, HARDWARE 
1070  DATA  KING  JOHN, MAGNA  CARTA , ENGLISH  CIVIL  WAR, 
FOUGHT  DUKE  OF  NORMANDY 

30 


1080  DATA  KIT  CARSON, WEST , NORTH , SOUTH 

1090  DATA  SHERMAN, NORTH, WEST, SOUTH 

1100  DATA  JEB  STUART, SOUTH, NORTH, WEST 

lUO  DATA  SAMUEL  ADAMS, AMERICAN  REVOLUTION, FAMOUS 

ECONOMIST, SECOND  PRESIDENT 

1120  DATA  GIBRALTAR, LORD  NELSON, DUKE  OF  WELLINGTON, 
NAPOLEON 

1130  DATA  U.S.  SENATE, TRUMAN, JACKSON, EISENHOWER 
1140  DATA  THOMAS  EDISON , MOTION  PICTURES , TYPEWRITER, 
AIRPLANES 

1150  DATA  PRINTING, GUTENBERG, LINDERBERG, HEGEL 

1160  DATA  WILLIAM  THE  CONQUERER, 1066 , ROME , 1512 

1170  DATA  KARL  MARX , HEGEL , ADAM  SMITH, DARWIN 

1180  DATA  CARTHAGE, ROME, TURKEY, ENGLAND 

1190  DATA  RENOIR, PAINTER, PHILOSOPHER, INDUSTRIALIST 

1200  DATA  SHAKESPEARE, ELIZABETH  I, KING  JOHN, HENRY  VIII 

1210  DATA  JOHN  PAUL  JONES , AMERICAN  REVOLUTION , WAR  OF 

1812, POET 

2000  PR I NT: PR I NT "YOUR  SCORE  IS  " ; INT ( (SC/TIMES) *100) ; " 
PERCENT. " 

Line  2000,  shown  above,  is  the  final  line  In  the  program.  It 
computes  your  score  by  dividing  the  number  of  your  correct 
answers  by  the  total  number  of  questions  asked,  and  then  multi- 
plying that  fraction  by  100  to  get  the  percentage. 

Important  Variables  in  History  Quiz 

A$  First  word 

B$,C$,D$  Words  with  which  to  associate  the  first  word 

E$,  F$  Input  needed  to  continue 

ANSWERS  Player's  response  for  quiz 

SC  Score 

TIMES  Number  of  questions  asked 

RAN  Random  number 

31 


Important  Lines  in  History  Quiz 

10-50  Initialization 

100-150  Introduction 

200-250  Beginning  of  quiz 

300-680  Sets  up  three  words  in  random  order 

700-810  Gets  responses  and  sees  if  it's  correct 

900-930  Sees  if  player  wants  to  continue 

1000-1210  Data 

2000  Computes  player's  score 

SPELLING  TESTER 

If  you  have  trouble  with  your  spelling,  as  most  of  us  do,  or 
you  know  someone  who  could  use  help,  here  is  a  program  which 
will  display  incorrect  and  correct  spellings  of  words  as  shown  in 
Fig.  3-1.  You  decide  which  is  correct. 

The  program  begins  by  DIMensioning  the  variables  and 
clearing  the  screen: 

10         DIM    A.r  (15)  :DIM    B*(15) 
20  DIM    I NPS(  15):  DIM    YN:f  (  1  ) 

30  SC=0 


EDITER 
EDITOR 

WHICH  IS  SPELLED  CORRECTLy^ 
?  EDITOR 

CORRECT 

DO  YOU  WANT  TO  CONTINUE  ? 

7 


Fig.  3-1.  Sample  screen  for  Spelling  Checker. 
32 


Your  ATARI  then  begins  reading  the  words,  displaying  the 
incorrectly  and  correctly  spelled  versions  in  a  random  order, 
asking  you  which  one  is  spelled  correctly. 

100  FOR  LaOPl=l  TO  37 

110  GRAPHICS  0 

120  READ  A^,B-^ 

130  RAN=INT(2>-RND(1)+1) 

140  IF  RAN=1  THEN  200 

150  PR I NT: PR I NT: PR  I NT  A* 

160  PRINT  BS- 

170  GOTO  300 

200  PR I NT: PR I NT: PR I NT  B* 

210  PRINT  (^S- 

300  PR  I NT: PR I NT "WHICH  IS  SPELLED  CORRECTLY" 

310  INPUT  INP:$: 

Once  you  give  an  answer,  the  computer  checks  to  see  if  you 
are  right  or  wrong,  and  also  asks  if  you  would  like  to  continue 
using  the  program.  If  not,  it  will  tell  you  what  your  score  is. 

320   IF  INPit-A*  THEN  SC^SC+1 :  PRINT:  PRINT"CORRECT.  "  : 

GOTO  500 

330   PRINT: PRINT"WRONG-  " 

500   PRINT; PR I NT "DO  YOU  WANT  TO  CONTINUE?" 

510   INPUT  YN:|: 

520   IF  YN:t="N"  THEN  600 

530   NEXT  LOOP! 

600   PRINT: PR I NT "YOUR  SCORE  IS  " ; INT ( (SC/LOOPl ) *100) ; " 

PERCENT. " 

Here,  at  the  end  of  the  program,  are  the  data: 

2000  DATA  IMPERIL, I nPER ILL, SHAPELY, SHAPLY, SENSORY, 
SENSERY 

33 


2010    DATA    HARASS,HARRASS,iriMINENCE,EMMINENCE,II1PALPABLE, 

IMPALPIBLE 

2020  DATA  IMPELLING , IMPELING , PERSISTENT , PERSISTANT , 

PROFESSOR,  PROFESOR 

2030  DATA  SUCCEED , SUCCEDE , TOMOROW, TOMMOROW , DISTILL , 
DISTIL 

2040  DATA  BLURRED, BLURED , BOGUS , BOGOS , AROUSE , ARROUSE 
2050  DATA  HIJACKER , HIGH- J ACKER , HARD-CORE ,HARDCORE , 
HALFBACK ,   HALF-BACK 

2060  DATA  GRITTY , GR I TY , GUARANTEE , GUARRANTEE , GROVEL , 
GROVELL 

2070  DATA  ENSUE , INSUE , HIGHLIGHT , HIGH-LIGHT , FOSSIL , 
FOSSLE 

2080  DATA  MISSILE , MISSLE , FULFILL , FULLFIL , ELECTORATE , 

ELLECTORATE 

2090  DATA  EDITOR , ED ITER , ELUDE ,ELLUDE , DEFER , DEFFER 

2100  DATA  CONTROL, CONTROLL, CONTROLLED, CONTROLED, 

STOPPIWC,  ST0PIN6 

2110  DATA  MARSHMALLOW,MARSHMELLOW, HYGIENE, HUGENE 
2120  DATA  FLOTSAM, FLOTSOM, ADVANTAGEOUS, ADVANTAGOUS 

You  might  want  to  try  adding  words  of  your  own  to  the 
program.  Simply  put  in  new  DATA  statements  and  adjust  the 
FOR/NEXT  loop  near  the  beginning  of  the  program  so  it  can 
accommodate  any  extra  words. 

Important  Variables  in  Spelling  Tester 

A$  Data  for  the  correct  spelling 

B$  Data  for  incorrect  spelling 

SC  Score  correct 

L00P1  Quiz 

RAN  Random  number  (1  or  2) 

INP$  User's  answer 

34 


Important  Lines  in  Spelling  Tester 

10-30  Initialization 

100  Beginning  of  quiz 

120  Reads  two  words  from  data 

130-210  Prints  the  words  in  random  order 

300-330  Asks  for  answer,  sees  If  it  is  correct 

500-530  Sees  if  player  wants  to  continue 

600  Computers  player's  score 

2000-2120  Data 

FRENCH  TUTOR 

If  you  are  interested  in  the  French  language,  or  if  you'd  just 
like  to  learn  a  few  words  to  use  at  your  favorite  international 
restaurant,  this  program  will  not  only  teach  you  French  words  but 
also  test  you  on  them.  Again,  you  can  add  more  words  to  the 
DATA  statements,  but  you  should  also  alter  the  program  to 
account  for  the  added  words. 

As  usual,  the  first  part  of  the  program  sets  up  the  variables 
and  clears  the  screen: 

10  DIM    E*:(15)  :DIM    F*(15) 

20  DIM    INP*:C15)  :DIM    YN«:  (  1  > 

30  SC-0 

100  GRAPHICS    0 

Then  a  "menu"  is  displayed  from  which  you  may  select  an 
option.  The  "parts"  are  the  lessons  from  which  you  may  learn 
certain  words,  and  the  "test"  will  quiz  you  on  those  words. 

110  POSITION  10,5 

120  PRINT"FRENCH  LESSON" 

130  POSITION  7, 10 

140  PRINT"!,  PART  ONE" 

150  POSITION  7, 11 

160  PRINT"2.  PART  TWO" 

170  POSITION  7, 12 

180  PR INT" 3.  PART  THREE" 

190  POSITION  7,13 

35 


200  PRINT"4,  PART  FOUR" 

210  POSITION  7,14 

220  PRINT"5,  PART  FIVE" 

230  POSITION  7,15 

240  PRINT"6.  PART  SIX" 

250  POSITION  7, 16 

260  PRINT"7,  TEST" 

270  INPUT  CH 

280  ON  CH  GOTO  500,300,320,340,360,300,1000 

Once  you  have  selected  an  option,  the  computer  will  go  to  a 
different  part  of  the  program  so  it  may  either  teach  you  or  quiz 
you  on  the  words: 

300  CLEAR=13 

310  GOTO  400 

320  CLEAR=26 

330  GOTO  400 

340  CLEAR«=39 

350  GOTO  400 

360  CLEAR=52 

370  GOTO  400 

380  CLEAR»=65 

400  FOR  L00P1=1  TO  CLEAR 

410  READ  F*,E* 

420  NEXT  LOOPl 

500  GRAPHICS  0 

510  FOR  L00P2=i  TO  13 

520  READ  F*,E:* 

530  PRINT  FS 

540  PRINT"  ";E* 

550  NEXT  L00P2 

36 


600  PRINT:PRINT:PRINT'*HIT  ANY  KEY  TO  CONTINUE" 

610  INPUT  lNP-$- 

620  RESTORE 

630  GOTO  100 

If  you  do  "take  the  test"  you  will  have  to  put  in  the  French 
word  for  each  English  word,  using  the  dialogue  shown  in  Fig. 
3-2.  The  ATARI  will  keep  track  of  your  score  as  you  go. 

1000  FOR  L00P3=1  TO  78 

1010  GRAPHICS  0 

1020  READ  FS,E$ 

1030  PRINTS  PRINT  E* 

1040  PRINT: PRINT"WHAT  IS  THE  FRENCH  WORD?" 

1050  PRINT" (INCLUDE  THE  ARTICLE)" 

1060  INPUT  INP:^ 

1070  IF  INP*<>F*  THEN  1100 

1080  GOTO  1200 


GOOD  EVENING 

WHAT  IS  THE  FRENCH  WORD  '? 


(INCLUDE  THE  ARTICLE) 
?  BONSOIR 

CORRECT 


Fig.  3-2.  Taking  the  French  test. 

37 


1100  PRINTtPRINT"WRONG" 
1120  GOTO  1500 
1200  PRINT:  PRINT*'CORRECT" 
1210  SC=SC+1 

If  you  want  to  continue  the  program,  you  may  do  so  when 
the  computer  asks  you: 

1500  PRINT: PR I NT "DO  YOU  WANT  TO  CONTINUE?" 

1510  INPUT  YN« 

1520  IF  YN«<>"Y"  THEN  1600 

1530  NEXT  L0OP3 

Finally,  the  computer  tells  you  your  score  based  on  how  well 
you  did  on  the  test. 

1600  PRINT: PRINT" YOUR  SCORE  IS  " ; INT < (SC/L00P3) *100) j " 

PERCENT, " 

The  data  are  located  at  the  end  of  the  program. 

2000  DATA  L ' ADDI T ION, B ILL, L'AGNEAU, LAMB 

2010  DATA  L' AIDE, ASS I STANCE, L'APRES-MIDI, AFTERNOON 

2020  DATA  L ' AUTOBUS , BUS , LE  BAIN, BATH 

2030  DATA  LE  BETE , BEAST , LA  BL ANCH I SSER IE, LAUNDRY 

2040  DATA  LE  BONBON , CANDY , BONJOUR , HELLO 

2050  DATA  BONSOIR,GOOD  EVENING, LA  BOUL ANGER IE, BAKERY 

2060  DATA  LA  BOUTIQUE , SHOP, LA  CAB I NE, CAB IN 

2070  DATA  LE  CAMION , TRUCK ,LE  CHASSEUR , BELLBOY 

2080  DATA  LE  CHAUSSURE , SHOE , LE  CHEQUE, CHECK 

2090  DATA  LE  CHIEN,DOG,LE  COMPLET,SUIT 

2100  DATA  LA  CRAVATE , NECKTIE , LE  CUIT, LEATHER 

2110  DATA  DE,FROM,DEMAIN,TOMMOROW 

2120  DATA  LA  DOUANE , CUSTOMS , LE  DRAPE AU, FLAG 

2130  DATA  L' ESSENCE, GASOLINE, LA  FEMME, WOMAN 

38 


2140  DATA  LE  GARCON , WAITER , LA  GARE, STATION 

2150  DATA  LE  GENDARME , POLICEMAN  ,  LA  GLACE, ICE  CREAM 

2160  DATA  GR ATU IT, FREE, L' MORA I RE, SCHEDULE 

2170  DATA  L'HOROLOGE,CLOCK,L 'HOTELIER, INNKEEPER 

2180  DATA  L'IMPOT, TAX, INTERDIT, FORBIDDEN 

2190  DATA  LUND I, MONDAY,MARD I, TUESDAY 

2200  DATA  MERCREDI , WEDNESDAY, JEUDI , THURSDAY 

2210  DATA  VENDREDI, FRIDAY, SAMEDI, SATURDAY 

2220  DATA  DIMANCHE , SUNDAY , LE  JOUET,TQY 

2230  DATA  LE  JOUR, DAY, LE  JOURNAL , NEWSPAPER 

2240  DATA  LE  LIBRAIRIE , BOOKSTORE ,LA  MAIRIE,TOWN  HALL 

2250  DATA  LE  MATIN, MORNING , LE  MEDEC IN , DOCTOR 

2260  DATA  MERCI, THANK  YOU , LE  METRO , SUBWAY 

2270  DATA  LE  MIDI, NOON, LE  MINUIT , MIDNIGHT 

2280  DATA  LE  MOIS, MONTH ,L ' OEUF , EGG 

2290  DATA  LE  PAIN , BREAD , PERDU , LOST 

2300  DATA  LE  PERE , FATHER , LE  PLAN, CITY  MAP 

2310  DATA  LE  POISSON , FISH , LE  PORTEUR , PORTER 

2320  DATA  LE  POULET , CHICKEN , LE  QUART I ER , NEIGHBORHOOD 

2330  DATA  LE  REVEIL,ALARM  CLOCK , LA  ROBE, DRESS 

2340  DATA  LE  SAC, BAG, LA  SALLE, ROOM 

2350  DATA  LA  SEMAINE, WEEK, LA  SERVEUSE, WAITRESS 

2360  DATA  LE  STYLO, PEN, LA  TAILLE,SIZE 

2370  DATA  LE  TAILLEUR, TAILOR, LA  VAL I SE , SUITCASE 

2380  DATA  LA  VI ANDE , MEAT , LA  VOITURE,CAR 

If  you  would  like  to  learn  a  language  other  than  French,  you 
can  use  the  same  technique  in  this  program.  Simply  include  the 
data  for  the  English  and  the  foreign-language  words. 

Important  Variables  in  French  Tutor 

E$  English  word  in  data 

39 


F$  French  word  in  data 

fNP$  Player's  response  to  test 

YN$  Used  to  ask  if  player  wants  to  continue 

SC  Score  in  quiz 

CH  Choice  from  menu  (input) 

CLEAR  Number  of  words  and  definitions  in  data  to  skip 

over 

LOOP1  Used  to  do  the  above 

LOOP2  Used  to  read  data  and  print  information  on 

screen 

L00P3  Used  to  ask  questions  for  test 

Important  Lines  in  French  Tutor 

10-30  Initialization 

100-260  Sets  up  menu 

270-280  Goes  to  selected  item 

300-380  Sets  number  of  pairs  of  data  to  skip  over 

400-420  Does  the  above 

500-550  Reads  desired  data,  prints  it  out 

600-630  Goes  back  to  menu 

1000  Beginning  of  test 

1010-1050  Asks  question 

1 060-1 080  Gets  response 

1 100-1210  Tells  player  if  he's  right  or  wrong 

1500-1530  Asks  player  if  he  wants  to  continue 

1 600  Computes  player's  score 


STATES  AND  CAPITALS 

At  some  time  in  every  American's  life  he  or  she  must  learn 
the  states  and  capitals.  As  terrible  as  this  task  may  be,  the 
computer  can  make  it  more  bearable  for  you,  as  you  will  discover 
with  this  program. 

First  the  computer  sets  up  the  program  and  gives  you  the 
option  of  taking  a  quiz  on  the  states  and  their  capitals,  or  simply 
finding  information  about  which  state  has  what  capital,  or  vice 
versa. 

5  DIM  A*<50):DIM  B*(50) 

6  DIM  INP*(20):DIM  USED (50) 

7  DIM  RESP0NSE«:C2O)  sDIN  YN*  ( 1 ) 
10  GRAPHICS  0 

40 


20  POSITION  9,4 

30  PR I NT "STATES  AND  CAPITALS  MENU" 

40  POSITION  7,7 

50  PR I NT " 1 .  I NFQRMAT I ON " 

60  POSITION  7,9 

70  PRINT"2,  QUIZ" 

80  POSITION  7,14 

90  PR I NT "PLEASE  CHOOSE  ONE." 

95  POSITION  7,16 

100  INPUT  CH 

110  IF  CH>2  THEN  SO 

130  IF  CH=1  THEN  150 

140  IF    CH=2    THEN    1000 

If  you  want  information,  you  simply  tell  the  computer  that 
you  want  to  find  out  which  state  belongs  to  what  capital  or  which 
capital  belongs  to  what  state.  (See  Fig.  3-3.)  Once  you  have 
done  this,  the  computer  will  find  the  information. 

150   GRAPHICS  0 
160   POSITION  7,7 


1     YOU  NAME  THE  STATE  AND  THE  COMPUTER 
WILL  FIND  THE  CAPITAL 

2.   YOU  NAME  THE  CAPITAL  AND  THE  COMPUTER 
WILL  FIND  THE  STATE 

^  1 

WHAT  IS  THE  STATE^ 

^  LOUISIANA 

THE  CAPITAL  OF  LOUISIANA  IS  BATON  ROUGE 


Fig.  3-3.  Getting  information  from  States  and  Capitals. 


41 


170  PRINT"! .  YOU  NAME  THE  STATE  AND  THE  COMPUTER  WILL 

FIND  THE  CAPITAL.  " 

180  POSITION  7,10 

190  PRINT'*2,  YOU  NAME  THE  CAPITAL  AND  THE  COMPUTER  WILL 

FIND  THE  STATE. " 

200  POSITION  7,15 

205  PRINT"PLEASE  INPUT  YOUR  CHOICE"; 

210  INPUT  CH2 

220  ON  CH2  GOTO  240,400 

230  GOTO  200 

240  GRAPHICS  0 

250  POSITION  7,7 

260  PRINT"WHAT  IS  THE  STATE?" 

270  INPUT  INP* 

280  FOR  Li=l  TO  50 

290  READ  A*,B* 

300  IF  A#«INP*  THEN  320 

310  NEXT  LI 

315  IF  Ll=51  THEN  PRINT" INVALID  INPUT": SOTO  260 

320  POSITION  7, 11 

330  PRINT"THE  CAPITAL  OF  "jiA*;"  IS  "  j  B* 

340  FOR  DELAY"!  TO  750iNEXT  DELAY 

345  RESTORE 

350  GOTO  10 

400  GRAPHICS  O 

410  POSITION  7,7 

420  PR I NT "WHAT  IS  THE  CAPITAL? 

430  INPUT  INP* 

440  FOR  Ll=l  TO  50 

450  READ  A*,B* 

42 


460  IF  B*=INP*  THEN  480 

470  NEXT  LI 

475  IF  LI =51  THEN  PRINT" INVALID  INPUT": GOTO  420 

480  POSITION  7,11 

490  PRINT  B*|"  IS  THE  CAPITAL  OF  " ; A* 

500  GOTO  340 

Here  are  the  data  of  the  states  and  their  capitals  required  by 

this  program: 

800  DATA  ALABAMA, MONTGOMERY, ALASKA, JUNEAU 

810  DATA  ARIZONA, PHOENIX, ARKANSAS, LITTLE  ROCK 

820  DATA  CALIFORNIA, SACRAMENTO, COLORADO, DENVER 

830  DATA  CONNECTICUT, HARTFORD, DELAWARE, DOVER 

840  DATA  FLORIDA, TALLAHASEE, GEORGIA, ATLANTA 

850  DATA  HAWAI I , HONOLULU, IDAHO, BOISE 

860  DATA  ILLINOIS, SPRINGFIELD, INDIANA, INDIANAPOLIS 

870  DATA  IOWA,DES  MO  I NES , KANSAS , TOPEKA 

880  DATA  KENTUCKY, FRANKFORT, LOU  I  SI ANA, BATON  ROUGE 

890  DATA  MAINE, AUGUSTA, MARYLAND, ANNAPOLIS 

900  DATA  MASSACHUSETTS, BOSTON, MICHIGAN, LANSING 

910  DATA  MINNESOTA, ST.  PAUL , M I SS I SS I PP I , J ACKSON 

920  DATA  MISSOURI , JEFFERSON  C I TY , MONTANA , HELENA 

930  DATA  NEBRASKA, LINCOLN, NEVADA, CARSON  CITY 

940  DATA  NEW  HAMPSH I  RE , CONCORD , NEW  JERSEY , TRENTON 

950  DATA  NEW  MEXICO, SANTA  FE , NEW  YORK, ALBANY 

960  DATA  NORTH  CAROL  I NA , RALE  I GH , NORTH  DAKOTA , BI SMARK 

970  DATA  OHIO, COLUMBUS, OKLAHOMA, OKLAHOMA  CITY 

980  DATA  OREGON, SALEM, PENNSYLVANIA, PHILADELPHIA 

990  DATA  RHODE  I SLAND , PROVI DENCE , SOUTH  CAROLINDA, 

COLUMBIA 

992  DATA  SOUTH  DAKOTA , PIERRE , TENNESSEE , NASHVILLE 

993  DATA  TEXAS , AUSTIN , UTAH , SALT  LAKE  CITY 

43 


995   DATA  VERMONT , MONTPELIER , VIRGINIA, RICHMOND 

997  DATA  WASHINGTON ,OLYMPIA , WEST  VIRGINIA, CHARLESTON 

998  DATA  WISCONSIN , MADISON, WYOMINS, CHEYENNE 

And,  finally,  if  you  want  to  be  tested  by  the  computer,  this 
part  of  the  program  will  require  you  to  name  either  the  state  of  a 
capital  or  the  capital  of  a  state,  whichever  you  prefer. 

1000  GRAPHICS  0 

1003  FOR  L5=l  TO  50 

1005  USED(L5)=0 

1007  NEXT  L5 

1010  POSITION  7,7 

1020  PRINT" 1-   'WHAT  IS  THE  CAPITAL?'" 

1030  POSITION  7,9 

1040  PRINT"2,   'WHAT  IS  THE  STATE?'" 

1050  POSITION  7, 12 

1060  INPUT  CH3 

1070  IF  CH3=1  THEN  1100 

lOaO  IF  CH3=2  THEN  1100 

1090  GOTO  1060 

1100  GRAPHICS  0 

1105  FOR  L2«l  TO  50 

1110  RAN= ( 50*RND  <!)+!) 

1120  FOR  L3-1  TO  50 

1130  IF  RAN=USED(L3)  THEN  1110 

1140  NEXT  L3 

1150  USED(L2)='RAN 

1160  FOR  L4=l  TO  RAN 

1170  READ  A*,B* 

1180  NEXT  L4 

1190  RESTORE 


44 


1200  IF  CH3=1  THEN  1300 

1210  IF  CH3=2  THEN  1400 

1300  PRINT-WHAT  IS  THE  CAPITAL  OF  "jA*;"?" 

1310  INPUT  RESPONSE* 

1320  IF  RESPONSE*=B*  THEN  PRINT"CORRECT" : SC=SC+1 : 

GOTO  1500 

1330  PRINT"WRONG" 

1340  PRINT"THE  CAPITAL  OF  ";A*;"  IS  " ; B* 

1350  GOTO  1500 

1400  PRINT  B*;"  IS  THE  CAPITAL  OF  WHAT  STATE?" 

1410  INPUT  RESPONSE* 

1420  IF  RESPONSE*=A*  THEN  PRINT"CORRECT" a SC=SC+1 : 

GOTO  1500 

1430  PRINT"WRONG" 

1440  PRINT  B*; "  IS  THE  CAPITAL  OF  " ; A* 

1450  GOTO  1500 

You  can  keep  answering  questions  until  you  are  satisfied 
that  you  know  the  material.  Then  the  computer  will  give  you  your 
score. 

ISOO  PRINT"DO  YOU  WANT  TO  TRY  ANOTHER?*' 

1510  INPUT  YN* 

1520  IF  YN*="Y"  THEN  1600 

1525  GRAPHICS  0 

1530  NEXT  L2 

1600  PRINT" YOUR  SCORE  IS  " 5 INTC <SC/L2) *1003 "  PERCENT." 

You  could  use  this  same  program  concept  to  match  any  two 
things,  such  as  International  capitals  with  their  respective  coun- 
tries, of  scientific  achievements  with  people  who  made  them 
possible,  and  so  on.  There  are  many  possibilities  in  educational 
software,  and  you  can  probably  come  up  with  an  excellent 
subject  that  a  person  could  learn  with  the  help  of  the  ATARI. 


45 


Important  Variables  in  States  and  Capitals 

A$  Data  for  the  state 

B$  Data  for  capital 

'NP$  Input  for  finding  information 

USED(X)  Makes  sure  that  states  in  quiz  are  not  used 

twice 
RESPONSES         Player's  answer  in  quiz 
^^$  Sees  if  player  wants  to  continue 

CH  Player's  choice  from  menu 

CH2  Choice  of  information  wanted 

CH3  Choice  of  type  of  quiz  wanted 

Lf  Loop  for  finding  Information 

DELAY  Delay  loop 

L2  Loop  to  ask  quiz  questions 

L3  Loop  used  to  make  sure  that  same  state 

has  not  been  used  twice  in  quiz 
L4  Used  to  read  remaining  data 

L5  Sets  all  USED(X)=:0 


Important  Lines  in  States  and  Capitals 

5-7  Initialization 

10-95  Sets  up  menu 

100-140  Gets  user's  choice 

150-230  Gets  choice  of  information  wanted 

240-350  Finds  capital  of  a  state 

400-500  Finds  the  state 

800-998  Data 

1003-1007     Sets  all  USED(X)  to  zero 

1 01 0-1 090      Gets  choice  of  quiz 

1100  Beginning  of  quiz 

1 1 20-1 1 40      Makes  sure  that  random  number  has  not  been 

used  twice 
1 1 60-1 1 80      Reads  data  to  get  to  the  data  needed  in  the  quiz 
1300-1450     Asks  questions,  gets  responses,  sees  if  they 

are  correct 
1500-1520      Sees  if  user  wants  to  continue  the  quiz 
1600  Computes  the  user's  score 

LEARNING  THE  EASY  WAY 

As  you  can  tell  from  using  these  programs,  computers  can 
make  learning  more  enjoyable  and  less  frightening  for  younger 

46 


people,  who  might  be  afraid  of  being  scorned  for  their  mistakes. 
Computers  can  teach  individuals  at  their  own  pace,  and  will 
provide  endless  encouragement  and  congratulations  for  people 
learning  with  the  computer.  See  if  you  can  make  a  program  to 
teach  a  subject  in  which  you  have  an  interest,  and  find  out  if 
people  using  the  program  can  learn  as  much  or  more  than  they 
would  with  a  teacher.  You  might  be  surprised  at  the  results. 


47 


Chapter  4 


Math  and  Your  Computer 


Since  computers  are  basically  ^^math  machines"  (they  work  only 
with  numbers  and  translate  words  into  numbers  before  using 
them),  your  ATARI  600XL  or  800XL  is  very  proficient  at  math.  It 
can  handle  addition,  subtraction,  multiplication,  division, 
trigonometric  functions,  exponents,  and  just  about  any 
other  mathematical  formula  you  can  give  it. 

Because  of  the  ATARI'S  prowess  at  mathematics,  your 
computer  can  be  an  excellent  tool  for  solving  your  math  prob- 
lems, as  well  as  testing  you  on  your  math  abilities.  In  this  chapter 
we'll  take  a  look  at  four  programs  that  serve  these  purposes  and 
will  prove  how  quickly  and  accurately  the  ATARI  home  comput- 
ers can  handle  numbers. 

CALCULATOR 

This  first  program  will  serve  the  functions  of  an  advanced 
calculator.  It  will  perform  the  four  basic  functions  (add,  subtract, 
multiply,  divide),  trigonometric  functions  (like  sine,  cosine,  tan- 
gent), and  find  the  square  root  of  a  number.  This  program  takes 
advantage  of  most  of  the  ATARI'S  math  commands  and  can  help 
you  by  being  a  powerful  "computer  calculator,"  as  shown  in  Fin 
4-1.  ^' 

The  first  part  of  the  program  clears  the  screen  and  displays 
the  "menu"  of  options.  The  computer  then  allows  you  to  choose 
a  function  and  input  the  number  you  wish  to  use  with  it. 


49 


SUPER  CALCULATOR 

FUNCTIONS 

1, 
2. 
3, 
4. 
5. 

ADD 

SUBTRACT 

MULTIPLY 

DIVIDE 

SQUARE 

7. 

8. 

9. 

10. 

SINE 
COSINE 
TANGENT 
LOG 
50 

6.   SQUARE  ROOT 


?10 

PLEASE  INPUT  THE  FUNCTION  YOU  WANT'?  3 

AT  THE  PROMPT,  PLEASE  INPUT 

THE  APPROPRIATE  NUMBERS?  5 


Fig.  4-1.  Computer  Calculator. 


10  GRAPHICS  O 

20  DEG 

100  POSITION  V,l 

110  PRINT'-SUPER  CALCULATOR" 

120  PRINT 

130  PRINT"FUNCTIONS:  " 

140  PRINT 

1~0  PRINT"!.  ADD  7.  SINE" 

160  PRINT"2.  SUBTRACT    8.  COSINE" 

170  PRINT"3,  MULTIPLY    9.  TANGENT' 

180  PRINT"4,  DIVIDE     10.  LOG" 

190  PR I NT "5.  SQUARE" 

195  PRINT"6.  SQUARE  ROOT" 

210  POSITION  5,15 

220  PRINT  NM; " 

225  PRINT:PRINT 

50 


230  INPUT  NM 

240  PR I NT "PLEASE  INPUT  THE  FUNCTION  YOU  WANT"; 

250  INPUT  FUNC:PRINT"AT  the  PROMPT  sign,  PLEASE  INPUT" 

251  PRINT"THE  APPROPRIATE  NUMBERS" 

The  computer  then  goes  to  a  predetermined  line  number 
based  on  the  value  of  your  function.  If  the  function  number  you 
selected  does  not  exist,  the  computer  will  go  back  to  line  21 0  to 
ask  for  your  input  once  again. 

300   ON  FUNC  GOTO  500,600,700,800,900,1000,1100,1200, 
1300, 1400 
310   GOTO  210 

For  some  of  these  functions  (like  square  root),  only  one 
number  (variable  NM)  will  be  necessary.  Other  functions  require 
a  second  number  (variable  NM2).  In  the  lines  below,  you  will  see 
that  some  of  the  functions  INPUT  to  the  variable  NM2,  while 
others  immediately  work  with  the  variable  NM  and  return  to  the 
functions  menu.  The  result  is  displayed  and  the  computer  waits 
for  more  input. 

500   INPUT  NM2 

510  NM=NM+NM2 

520  GOTO  210 

600  INPUT  NM2 

610  NM=NM-NM2 

620  GOTO  210 

700  INPUT  NM2 

710  NM=NM*NM2 

720  GOTO  210 

300  INPUT  NM2 

310  NM-NM/NM2 

820  GOTO  210 

700  NM=NM*NM 

'?10  GOTO  210 

LOOO  NM=SQR(NM) 

51 


1010  GOTO  210 

1 1 00  NM=S I N ( NM ) 

1110  GOTO  210 

12O0  NM=COS(NM) 

1210  GOTO  210 

1300    NM^'SINCNfD/COSCNM) 

1310  GOTO  210 

1400  NM=CLOG(NM) 

1410  GOTO  210 

1500  NM=INT(NM> 

1510  GOTO  210 

In  all  of  the  functions  above,  the  computer  returns  to  line  210 
to  display  the  result  of  the  function  and  await  input  for  another 
problenn.  You  might  want  to  add  more  functions  to  this  program 
using  your  own  special  equations.  If  you  wish  to  do  this,  simply 
add  lines  to  the  end  of  the  program  (your  first  added  function 
might  be  on  lines  1 600  and  1610)  and  add  the  line  number(s)  to 
the  ON  .  .  .  GOTO  statement  in  line  300. 

Important  Variables  in  Calculator 

NM  The  number  that  is  calculated 

FUNG  The  function  that  is  chosen 

NM2  Second  number  for  adding,  subtracting, 

or  whatever 

Important  Lines  in  Calculator 

20  Sets  trigonometric  functions  to  degrees 

100-200  Sets  up  list  of  functions 

220  Displays  number 

225-250  Gets  number  and  function  by  which  to  calculate 

300  Goes  to  chosen  function 

BASIC  SKILLS  CHECK-UP 

!f  you  think  that  calculators  and  computers  have  "spoiled" 
you  into  complete  reliance  on  machines  for  simple  mathematical 
functions,  you  might  want  to  try  this  program.  Or  you  could  let  a 
younger  person  use  it  to  try  out  his  or  her  skills  at  addition, 
subtraction,  and  multiplication.  The  challenge  of  this  program  is 

52 


not  only  getting  the  problems  correct,  but  also  doing  so  in  as  little 
time  as  possible. 

The  program  begins  by  setting  up  the  string  arrays.  It  then 
waits  for  you  to  hit  a  key  and  press  <  RETURN>  so  it  can  begin. 

50  DIM  A*(l> 

60  DIM  YN*(1) 

100  GRAPHICS  O 

HO  POSITION  7,8 

120  PR I NT "BASIC  SKILLS  CHECK-UP" 

130  POSITION  4,12 

140  PRINT-HIT  ANY  KEY  TO  CONTINUE" 

150  INPUT  A* 

The  ATARI  now  clears  the  screen  and  shows  you  the  three 
options  from  which  you  may  choose.  Select  one  of  these,  and 
press  <RETURN>. 

160  GRAPHICS  O 

170  POSITION  5,8 

180  PRINT" 1.  ADDITION" 

185  POSITION  5,9 

190  PRINT "2-  SUBTRACTION" 

195  POSITION  5,10 

200  PRINT"3-  MULTIPLICATION" 

210  PRINT: INPUT  CH 

Because  the  computer  has  to  set  a  certain  limit  how  high  the 
^andom  numbers  can  be  used  to  test  you,  the  ATARI  takes  into 
consideration  the  function  you  have  chosen.  If  you  are  going  to 
be  doing  addition  or  subtraction,  the  limit  of  the  random  numbers 
will  be  from  one  to  fifteen,  since  these  are  not  too  high  for  a 
person  adding  or  subtracting.  On  the  other  hand,  since  multipli- 
cation is  more  difficult,  the  limit  is  set  to  nine.  Also,  the  timer  in  the 
ATARI  (in  bytes  19  and  20  in  the  computer's  memory)  is  set  to 
zero.  The  computer  then  begins  the  FOR/NEXT  loop  to  select 
ten  random  numbers  for  your  problems. 

53 


215  GRAPHICS  0 

220  LIMIT=15 

230  IF  CH=3  THEN  LIMIT=9 

240  POKE  19,0: POKE  20,0 

250  FOR  TIMES=1  TO  10 

270  NUMl  =  INT<LiriIT#RND<l)+l) 

280  NUM2=INT (LIMIT*RND (1 ) +1 ) 

Based  on  your  selection,  the  computer  will  present  a 
problem  to  you  and  accept  an  answer. 

290  ON  CH  SOTO  300,320,340 

300  PRINT  NUM1;»+";NUM2; "="; 

310  INPUT  ANSWER: GOTO  500 

320  PRINT  NUt11;"-";NUM2;  "  =  "; 

330  INPUT  ANSWER: GOTO  500 

340  PRINT  NUMl; "*";NUM2; "="; 

350  INPUT  ANSWER: GOTO  500 

Once  you  have  selected  an  answer  the  computer  will  check 
to  see  if  you  are  right  or  wrong;  if  you  are  correct,  it  will  go  to  the 
next  question  or  repeat  the  question  if  you  answered  incorrectly. 

This  program  is  an  excellent  tool  for  sharpening  up  basic 
math  skills  since  you  have  to  work  against  the  clock  to  answer 
the  questions.  To  make  it  more  difficult  for  the  person  using  the 
program  (even  if  that  happens  to  be  you),  try  to  limit  the  amount 
of  time  in  which  questions  can  be  answered.  You  could  also 
increase  the  high  limit  on  the  random  numbers  that  can  be 
selected. 

Important  Variables  in  Basic  Skills  Check-Up 

A$  Input  to  see  if  user  is  ready  to  continue 

YN$  Input  to  see  if  user  wants  to  use  the  program 

again 
CH  User's  choice  of  function 

LIMIT  Sets  limit  of  random  numbers  to  15  when  doing 

addition  or  subtraction  and  to  9  when  doing 

multiplication 

54 


NUM1  First  random  number 

NUM2  Second  random  number 

A  The  time  the  user  takes  to  complete  the  problems 

ANSWER  The  user's  answer 

TIMES  The  loop  which  asks  for  the  answers  to  ten 

problems 

SECONDS  User's  time  (variable  A)  converted  to  seconds 

Important  Lines  in  Basic  Skills  Check-Up 

50-210  Initialization  to  set  up  menu 

220-230  Sets  upper  limit  of  random  numbers 

240  Sets  time  to  zero 

250-280         Gets  two  random  numbers 

290-350  Prints  selected  random  operation  on  screen  and 

gets  answer  from  user 
500-560  Checks  if  answer  is  right  or  wrong 

"^00  Tells  user  he  is  wrong,  goes  to  ask  question 

once  again 
800  Tells  user  he's  right 

900-920  Gets  time,  converts  it  to  seconds 

930-940         Tells  user  his  time 
950-980  Asks  if  the  user  wants  to  try  again 


4+2=^6 

CORRECT 

6  +  9  =  '?  14 

WRONG 

6  +  9  =  '^  15 

CORRECT 

3  +  8  =  ';' 


Fig.  4-2.  Skills  Check-Up. 


55 


ENTER  THE  LENGTH  OF  THE  RADIUS. 

?10 

THE  AREA  IS  314.59 

HIT  ANY  KEY  TO  CONTINUE. 


Fig.  4-3.  Geometry  program  finding  the  area  of  a  circle. 

GEOMETRY 

This  next  program  is  basically  a  tool,  since  it  will  solve 
geometry  problems  for  you.  With  this  tool  you  can  find  areas  and 
volumes;  you  can  also  discover  how  the  computer  finds  the 
answer  to  these  problems.  Figure  4-3  shows  a  sample  problem. 
To  use  Geometry,  you  simply  select  a  particular  function  and 
then  give  the  computer  the  necessary  data  to  solve  the  problem. 

500  ON  CH  GOTO  510,530,550 

510  IF  ANSWER<>(NUM1+NUM2)  THEN  GOTO  700 

520  GOTO  800 

530  IF  ANSWER<>(NU«1-NU«2)  THEN  GOTO  700 

540  GOTO  800 

550  IF  ANSWER<>(NUM1*NUM2)  THEN  GOTO  700 

560  GOTO  800 

700  PRINT"WRaNG":GOTO  290 

800  PRINT"CORRECT":NEXT  TIMES 

Once  the  ten  math  questions  have  been  asked,  the  ATARI 
will  inform  you  of  the  time  it  took  you  to  answer  the  problems,  and 


56 


then  ask  if  you  would  like  to  use  the  program  again.  If  so,  you  can 
select  another  function  to  practice.  If  not,  the  program  will  end. 

900  A=PEEK<19) 

9 1 0  SECDNDS=4 , 27* A 

920  SECONDS=INT (SECONDS) 

930  PRINT: PRINT 

940  PRINT"YOUR  TIME  IS  "; SECONDS;"  SECONDS," 

950  PRINT: PRINT 

960  PRINT"DO  YOU  WANT  TO  PLAY  AGAIN"; 

970  INPUT  YN* 

980  IF  YN*="Y"  THEN  RUN 

First,  the  computer  shows  you  the  16  different  functions 
available  to  you  and  lets  you  tell  it  which  function  you  wish  to  use. 

50  DIM  ANYSd) 

100  GRAPHICS  O 

110  PR I NT : PR I NT : PR I NT 

120  PRINT" 1.  AREA  OF  A  RECTANGLE" 

130  PR INT "2.  AREA  OF  A  SQUARE" 

140  PRINT "3.  AREA  OF  A  PARALLELOGRAM" 

150  PRINT"4.  AREA  OF  A  TRIANGLE" 

160  PRINT"5.  AREA  OF  A  TRAPEZOID" 

170  PRINT"6.  AREA  OF  A  CIRCLE" 

180  PRINT" 7,  AREA  OF  A  SPHERE" 

190  PRINT"B,  AREA  OF  A  CUBE" 

200  PR I NT "9,  AREA  OF  A  CYLINDER" 

210  PRINT" 10-  AREA  OF  A  SPHERE" 

220  PRINT" 11.  VOLUME  OF  A  RECTANGULAR  SOLID" 

230  PRINT" 12.  VOLUME  OF  A  CUBE" 

240  PRINT" 13-  VOLUME  OF  A  CYLINDER" 

250  PRINT" 14.  VOLUME  OF  A  SPHERE" 

260  PRINT" 15-  VOLUME  OF  A  CONE" 

57 


270   PRINT" 16,  VOLUME  OF  A  PYRAMID" 

280   PRINT: PRINT: PRINT"PLEASe  CHOOSE  ONE." 

290   INPUT  CHOICE 

Your  ATARI  will  now  go  to  the  line  number  that  performs  the 
function  selected. 

295   6RAPHICS  O 

300   ON  CHOICE  GOTO  350,400,500,600,700,800,900,1000, 

1100,1200,1300,1400,1500,1600,1700,1800 

Each  Of  the  formulae  below  has  to  know  certain  facts  to 
calculate  the  answer  to  your  problem.  For  instance,  to  find  the 
area  of  a  square,  the  computer  needs  only  the  length  of  one  side. 
To  find  the  volume  of  a  cone,  however,  the  computer  needs  to 
find  the  radius  of  the  base  and  the  height  of  the  cone.  It  finds  out 
this  data  by  accessing  certain  subroutines  found  near  the  end  of 
the  program.  These  subroutines  will  let  you  input  the  necessary 
data.  Because  the  computer  can  use  them  over  and  over  again, 
this  program  is  shorter  and  more  efficient  than  it  would  be  if,  for 
each  of  the  problems,  the  computer  had  INPUT  statements 
exclusively  for  that  type  of  function.  In  the  lines  below,  the 
computer  will  access  the  subroutines  needed  to  get  the  neces- 
sary data,  and  then  perform  the  function,  go  to  the  appropriate 
line  number,  and  displays  the  result. 

350  GOSUB  2000 

360  GOSUB  2100 

370  AREA-LN*WD 

380  GOTO  6000 

400  GOSUB  2000 

410  AREA=LN*LN 

420  GOTO  6000 

5O0  GOSUB  2200 

510  GOSUB  2300 

520  AREA=BA*HT 

530  GOTO  6000 

58 


600  GOSUB  2200 

610  GOSUB  2300 

620  AftEA=<BA*HT)/2 

630  GOTO  6000 

700  GOSUB  2200 

710  GOSUB  2400 

720  GOSUB  2300 

730  AREA=< (BA+BA2)/2)*HT 

740  GOTO  6000 

800  GOSUB  2500 

810  AREA=(RD*RD>*3_ 14159 

B20  GOTO  60OO 

900  GOSUB  2000 

910  GOSUB  2100 

920  GOSUB  2300 

930  AREA=<2*LN*WD)+(4*LN*HT) 

940  GOTO  6000 

1000  GOSUB  2000 

1010  AREA=6*LN*LN 

1020  GOTO  6000 
LI 00  GOSUB  2500 

:ill0  GOSUB  2300 

:.  120  AREA=2*RD*HT*3- 14159 

1 130  GOTO  6000 

J  200  GOSUB  2500 

3  210  AREA=4*RD*RD*3. 14159 

] 220  GOTO  6000 

1300  GOSUB  2000 

1310  GOSUB  2100 

1320  GOSUB  2300 

1330  VOL=LN*WD*HT 

59 


1.340  GOTO  6500 

1400  GOSUB  2000 

1410  VOL=LN*LN*LN 

1420  GOTO  650O 

1500  GOSUB  2300 

1510  GOSUB  2500 

1520  V0L=3. 14159*RD*RD*HT 

1530  GOTO  6500 

1600  GOSUB  2500 

1610  V0L=(4*3. 14159*RD*RD*RD)/3 

1620  GOTO  6500 

1700  GOSUB  2300 

1710  GOSUB  2500 

1720  V0L=(3. 14159*RD*RD*HT)/3 

1730  GOTO  65O0 

1800  GOSUB  2200 

1810  GOSUB  2300 

1820  V0L=(BA*BA*HT)/3 

1830  GOTO  6500 

The  lines  below  are  the  subroutines  mentioned  earlier. 
They  allow  you  to  enter  the  width,  height,  radius,  or  whatever 
else  is  needed  to  calculate  an  accurate  answer  about  a  geomet- 
ric shape  or  object. 

2000  PRINT: PR I NT "ENTER  THE  LENGTH." 

2010  INPUT  LN 

2020  RETURN 

2100  PRINT: PRINT"ENTER  THE  WIDTH." 

2110  INPUT  WD 

2120  RETURN 

2200  PRINT; PR I NT "ENTER  THE  LENGTH  OF  THE  BASE," 

60 


2210  INPUT  BA 

2220  RETURN 

2300  PR I NT: PR I NT "ENTER  THE  HEIGHT." 

2310  INPUT  HT 

2320  RETURN 

2400  PRINT: PR I NT "ENTER  THE  LENGTH  OF  THE  SECOND  BASE." 

2410  INPUT  BA2 

2420  RETURN 

2500  PRINT: PR I NT "ENTER  THE  LENGTH  OF  THE  RADIUS," 

2510  INPUT  RD 

2520  RETURN 

Once  the  ATARI  has  found  the  answer  to  your  problem,  it 
will  display  the  area  or  the  volume,  whichever  is  appropriate. 

6000  PRINTrPRINT 

6010  PR  I  NT  "THE  AREA  IS  *' ;  AREA 

6020  GOTO  7000 

6500  PRINTrPRINT 

6510  PR I NT "THE  VOLUME  IS  " ; VOL 

The  ATARI  will  then  wait  for  you  to  press  a  key  followed  by 
the  <RETURN>  key  to  try  another  problem. 

7000  PRINTrPRINT 

7010  PRINT "HIT  ANY  KEY  TO  CONTINUE." 

7020  INPUT  ANYS 

7030  GOTO  100 

Again,  you  can  put  other  formulae  into  this  program,  but  you 
will  have  to  compensate  for  the  additions  in  the  other  parts  of 
your  program  (such  as  the  ON  .  .  .  GOTO  statement).  Inciden- 
tally, not  only  is  this  an  excellent  tool  for  calculating  the  answers 
to  problems,  but  it  could  also  be  used  (by  a  high  school  teacher, 
for  example)  to  check  geometry  tests. 

61 


Important  Variables  in  Geometry 

CHOICE  Input  for  the  figure  chosen  by  the  user 

AREA  Area  of  a  figure 

VOL  Volume  of  a  figure 

LN  Length 

WD  Width 

HT  Height 

BA  Base  length 

BA2  Second  base  length 

RD  Radius 

ANY$  Used  to  see  if  user  wants  to  continue 

Important  Line  Numbers  in  Geometry 

50-290  Sets  up  menu 

300  Goes  to  selected  figure 

350-1 830  Calculates  areas  or  volume 

2000-2520  Gets  necessary  input  from  user 

6000-6020  Tells  user  the  area 

6500-6510  Tells  user  the  volume 

7000-7030  Waits  until  user  is  ready  to  continue 

LENGTH  CONVERTER 

This  last  program  is  also  a  tool.  It  can  convert  linear  units  of 
one  type,  specifically  measurements  of  length  in  either  metric  or 
"standard"  units— as  nonstandard  as  the  American  system  is 
with  respect  to  the  rest  of  the  world— into  linear  units  of  another 
type.  For  example,  you  could  change  a  number  of  kilometers  into 
miles,  a  number  of  centimeters  into  inches,  or  a  number  of 
kilometers  into  meters.  You  can  change  from  any  unit  to  any 
other  unit,  even  metric  to  metric  or  standard  to  standard.  A 
sample  screen  can  be  found  in  Fig.  4-4. 

As  usual,  the  first  part  of  this  program  shows  a  menu  of  the 
different  selections.  You  can  chose  from  this  menu  the  number 
of  the  unit  you  will  give  the  computer  and  the  unit  to  which  you 
want  to  change.  After  the  computer  shows  you  the  menu,  it  goes 
to  the  subroutine  at  line  4000,  which  will  let  you  select  both  units 
and  the  quantity  involved. 

50    DIM  INP*(1) 
100   GRAPHICS  O 
200   POSITION  10,3 

62 


LENGTH  CONVERTER 

1.  INCHES 

2.  FEET 

3.  YARDS 

4.  MILES 

5.  CENTIMETERS 

6.  METERS 

7.  KILOMETERS 

WHICH  IS  THE  UNIT  THAT  YOU  WANT 
TO  CHANGE  FROM? 


Fig.  4-4.  Length  Converter. 

250  PRINT"LEN6TH  CONVERTER" 

260  PRINT: PRINT 

300  PRINT" 1.  INCHES" 

310  PRINT"2.  FEET" 

320  PR I NT " 3 ,  YARDS " 

330  PRINT"4.  MILES" 

340  PRINT"5.  CENTIMETERS" 

350  PRINT"6,  METERS" 

360  PR I NT " 7 .  K I LOMETERS " 

370  GOSUB  4000 

The  ATARI  will  then  go  to  a  line  number  based  on  the  value 
of  the  variable  UNIT1.  At  that  line  number  will  be  another  ON  . . . 
GOTO  statement  which  will,  based  on  the  value  of  UNIT2,  find 
the  line  which  will  convert  your  number  from  the  first  unit  to  the 
second  unit  amount.  At  that  point,  the  ATARI  will  go  to  line  5000 
to  give  you  the  answer  to  the  question. 


63 


380  ON  UNITl  GOTO  400,500,600,700,800,900,1000 

400  ON  UNIT2  GOTO  410,420,430,440,450,460,470 

410  AM0UNT2=AM0UNT1:G0T0  5000 

420  AMOUNT2=AMOUNT1/12:GOTO  5000 

430  AM0UNT2=AM0UNT 1/36: GOTO  5000 

440  AM0UNT2=(AM0UNTl/12)/5280:GOTO  5000 

450  Ah0UNT2=AM0UNTl*2.54:G0T0  5000 

460  Ari0UNT2=AM0L)NT  1  * .  0254 :  GOTO  5000 

470  AM0UNT2=( ( AMOUNT 1 / 12) /5280) #. 62: GOTO  5000 

500  ON  UNIT2  GOTO  510,520,530,540,550,560,570 

510  AM0UNT2=AM0UNT 1*12: GOTO  5000 

520  AMOUNT2=AMOUNTl:GOTO  5000 

530  AM0UNT2=AMOUNTl/3:GOT0  5000 

540  AMOUNT2=AMOUNTl/5280:6aTO  5000 

550  AMOUNT2=(AMOUNTl*12)*2. 54s  GOTO  5O00 

560  AM0UNT2=Af10UNT  1*0.  3048:  GOTO  5000 

570  AM0UNT2=(AM0UNT1/5280)*1.61:G0T0  5000 

600  ON  UNIT2  GOTO  610,620,630,640,650,660,670 

610  AM0UNT2=AM0UNT1*24:G0T0  5000 

620  AM0UNT2=AM0UNT1*3:G0T0  5000 

630  AM0UNT2=AM0UNT1:G0T0  5000 

640  AM0UNT2= ( AMOUNT 1 *3 ) /5280: GOTO  5000 

650  AMOUNT2=(AM0UNTl*24)*2.54:GOT0  5000 

660  AMOUNT2=AM0UNTl*0.91:G0T0  5000 

670  AM0UNT2= (AMOUNTl/ 1760) « 1.61: GOTO  5000 

700  ON  UNIT2  GOTO  710,720,730,740,750,760,770 

710  AMOUNT2=(AM0UNTl*528O)*12:G0T0  5000 

720  AMOUNT2=AMOUNT 1*5280: GOTO  5000 

730  AM0UNT2=AM0UNT 1  * 1 760: GOTO  5000 

740  AM0UNT2=AM0UNT1:G0T0  5000 

64 


750   AMaUNT2= (AMOUNT! *&3360) #2, 54: GOTO  5000 

760   AMOUNT2=< AMOUNT 1*1. 61)* 1000: GOTO  5000 

770   AM0UNT2=AM0UNT1*1-61:G0T0  5000 

800   ON  UNIT2  GOTO  810,820,830,840,850,860,870 

810   AM0UNT2=AM0UNT1*0.39:G0T0  5000 

820   AMOUNT2= ( AMOUNT 1 *0 . 39 ) / 1 2 : GOTO  5000 

830   AM0UNT2=( (AM0UNT1*0. 39) /12) /3: GOTO  5000 

840   AMOUNT2=< (AMOUNT 1*0. 39/1 2) >*5280: GOTO  5000 

850   AMOUNT2=AMOUNTl:GOTO  5000 

860   AM0UNT2=AM0UNT 1/100: GOTO  5000 

870   AM0UNT2=AM0UNT1/ 1000: GOTO  5000 

900   ON  UNIT2  GOTO  910,920,930,940,950,960,970 

910   AM0UNT2=AM0UNTl/0, 254: GOTO  5000 

920   AMOUNT2=(AMOUNT1/0- 0254) /12r GOTO  5000 

930   AMOUNT2=AMOUNTl*l-O9:G0T0  5OO0 

940   AM0UNT2=( (AM0UNTl/.025  4)/12)*5280)*12:G0T0  5000 

950   AM0UNT2=AM0UNT1* 100: GOTO  5000 

960   AMOUNT2=AMOUNT 1 : GOTO  5000 

970   AM0UNT2=AM0UNT1/ 1000: GOTO  5O0O 

1000  ON  UNIT2  GOTO  1010,1020,1030,1040,1050,1060,1070 

1010  AM0UNT2=( (AMOUNT 1*. 62) *5280)* 12: GOTO  5000 

1020  AM0UNT2=(AM0UNT1*0.62)*5280:G0T0  5000 

1030  AM0UNT2=(AMaUNTl*0. 62)* 1760: GOTO  5000 

1040  AMOUNT2=AMOUNTl*0-62:GOTO  5000 

1050  AMOUNT2=AMOUNT1*100000:GOTO  5000 

1060  AM0UNT2=AM0UNT1* 1000: GOTO  5000 

1070  AMOUNT2=AMOUNTl:GOTO  5000 

The  subroutine  below  will  let  you  Input  the  unit  from  which 
you  want  to  change,  the  amount  of  the  unit,  and  the  unit  to  which 
you  want  to  change. 


65 


4000  PRINT: PRINT"WHICH  IS  THE  UNIT  THAT  YOU  WANT  TO 
CHANGE  FROM?" 
4010  INPUT  UNITl 

4020  PRINT: PR I NT "WHAT  IS  THE  AMOUNT  OF  THIS  UNIT?" 

4030  INPUT  AMOUNT 1 

4040  PRINT: PR I NT "WHAT  UNIT  DO  YOU  WISH  TO  CHANGE  TO?" 

4050  INPUT  UNIT2 

4060  RETURN 

Finally,  the  ATARI  will  tell  you  the  answer  in  the  new  unit, 
and  then  wait  for  you  to  press  a  key  plus  <RETURN>  to  do 
another  conversion. 

5000  PRINT!  PR  I  NT  "THE  AMOUNT  OF  THE  NEW  UNIT  IS  " ;  AM0UNT2 
5010  PRINT:PRINT"HIT  ANY  KEY  TO  CONTINUE." 
5020  INPUT  INP* 
5030  GOTO  100 

This  completes  this  program,  which  will  serve  as  a  helpful 
conversion  tool.  You  may  also  want  to  utilize  this  program  as  a 
testing  machine,  having  a  person  figure  out  conversion  prob- 
lems and  then  testing  his  or  her  answers  against  the  computer's. 

Important  Variables  in  Length  Converter 

INP$  Input  to  see  if  user  wants  to  continue 

'JNITI  The  unit  of  measure  that  the  user  wants  to 

convert 
AM0UNT1  The  amount  of  this  unit 

UNIT2  The  unit  that  to  which  the  user  wants  to 

change 
AMOUNT2         The  amount  of  the  above 

Important  Lines  in  Length  Converter 

50-370  Initialization/Prints  Menu 

380  Goes  to  selected  unit 

400-1070  Converts  to  selected  unit 

4000-4060  Gets  necessary  input 

5000  Gives  user  the  answer 

5010-5030  Waits  until  the  user  wants  to  continue 

66 


This  completes  our  exploration  of  how  the  computer  can 
work  with  math.  After  using  these  programs,  you  will  discover 
that  your  ATARI  is  an  excellent  tool  for  mathematics.  You  may 
write  some  programs  yourself  covering  other  areas  of  math, 
such  as  calculus,  graphing,  and  geometry— accompanied  by 
graphics  to  show  the  various  geometric  shapes  and  their  for- 
mulae. 


67 


Chapter  5 


Graphics  Programs  for  the  ATARI 

The  ATARI  home  computers  can  produce  high-quality  color 
graphics  with  only  a  few  simple  commands.  It  is  certainly  worth 
our  while  to  take  a  look  into  the  power  of  the  graphics  of  the 
ATARI  and  explore  some  of  its  uses. 

TERMS  YOU  NEED  TO  KNOW 

Before  we  begin  examining  the  BASIC  programs  in  this 
chapter  that  work  with  the  graphics  of  the  ATARI,  there  are  a  few 
terms  you  need  to  know  so  you'll  understand  what  I  am  talking 
about  when  I  mention  such  things  as  hue,  luminance,  and  high 
resolution. 

Color.  There  are  a  total  of  256  different  colors  you  can  utilize 
on  the  ATARI  home  computers,  although  some  graphics  modes 
don't  support  this  many  colors.  In  fact,  in  the  very  intricate  and 
detailed  graphics  modes,  as  few  as  two  colors  may  be  available. 

Graphics.  These  are  the  pictures  (as  opposed  to  the  words 
and  numbers)  you  see  on  the  screen  as  in  Fig.  5-1 .  Bar  graphs, 
line  graphs,  spaceships  in  arcade  games,  and  any  othertypes of 
visual  images  you  see  can  be  called  graphics. 

Low  Resolution.  Graphics  which  are  rough,  not  well-defined, 
and  not  accurately  representative  of  what  they  are  supposed  to 
be  (for  instance,  graphics  showing  a  ship  which  doesn't  exactly 
look  like  a  ship)  are  low-resolution  graphics.  These  don't  take  up 
very  much  memory  and  are  quite  simple  to  program,  but  they  are 

69 


WHAT  IS  THE  FORMULA  FOR  THIS  SHAPE? 


ENTER  ANSWER'^ 


Fig.  5-1.  A  screen  showing  graphics. 


HERE   ISA  TRIANGLE 


Fig.  5-2.  Low-resolution  graphics. 
70 


low  in  quality  and  aren't  appropriate  for  things  such  as  arcade 
games  or  line  graphics,  which  generally  require  high  resolution. 
For  things  such  as  bar  graphs  or  simple  charts,  however,  low 
resolution  usually  will  suffice.  Figure  5-2  is  an  example  of  low 
resolution. 

High  Resolution.  This  is  the  opposite  of  low  resolution,  since 
these  graphics  are  sharp,  very  well-defined,  and  take  up  a 
significant  amount  of  memory,  time,  and  effort  to  complete  and 
draw.  Figure  5-3  shows  high-resolution  graphics. 

Hue.  This  is  a  variation  of  a  color.  Its  gradation  along  the 
spectrum  of  visible  light  from  red  to  violet.  With  a  change  in  hue, 
a  color's  appearance  will  also  change. 

Luminance.  This  is  the  "brightness"  of  a  color.  If  you  in- 
crease the  luminance,  the  brightness  increases. 

Now  that  we  have  learned  the  definitions  of  these  terms,  we 
can  take  a  look  at  the  four  different  programs  in  this  chapter. 

COLORBAR 

Using  this  first  program  is  an  excellent  way  to  learn  the 
significance  of  hue  and  luminance  in  affecting  the  way  a  color 
appears  on  the  screen.  To  use  this  program,  simply  press  the  H 


HERE  ISA  TRIANGLE 


Fig.  5-3.  High-resolution  graphics. 

71 


key  to  increase  the  value  of  the  hue,  SHIFT-H  to  decrease  the 
value  of  the  hue,  L  to  increase  the  luminance,  and  SHIFT-L  to 
decrease  the  luminance. 

The  first  part  of  the  program  puts  the  ATARI  into  graphics 
mode,  makes  certain  that  the  values  of  hue  and  luminance  are 
zero,  and  shows  the  values  of  both  hue  and  luminance: 

50  GRAPHICS  1 

60  HUE=0 

70  LUM=0 

100  POSITION  1,1 

110  PRINT  "HUE  IS  ";HUE 

115  PRINT  "LUMINANCE  IS  ";LUM 

At  this  point,  color  register  four  is  set  to  the  values  of  HUE 
and  LUM;  the  ATARI  begins  monitoring  the  keyboard  in  case 
you  press  anything.  If  you  press  H,  SHIFT-H,  L,  or  SHIFT-L,  the 
computer  will  go  to  the  appropriate  line  number.  If  not,  it  will  go 
back  to  line  130  to  go  through  the  process  again. 

120  SETCOLOR  4, HUE, LUM 

130  A=PEEK(764) 

140  IF  A=57  THEN  2O0 

150  IF  A=0  THEN  300 

160  IF  A=121  THEN  400 

170  IF  A=64  THEN  500 

180  GOTO  30 

The  different  routines  for  changing  hue  and  luminance  are 
all  basically  the  same.  When  the  computer  has  finished  making 
the  changes  in  the  variable  specified,  it  goes  to  line  600  to  "clear 
ouf  the  value  in  variable  A.  This  keeps  it  from  "thinking"  that  the 
key  you  just  pressed  is  being  pressed  again. 

200   IF  HUE=15  THEN  600 
210   HUE=HUE+1 
220   GOTO  600 

72 


300  IF  LUM=14  THEN  600 

310  LUri=LUM+2 

320  GOTO    600 

400  IF  HUE=0  THEN  600 

410  HUE=HUE-1 

420  GOTO  600 

500  IF  LUM=0  THEN  600 

510  LUM=LUf1-2 

520  GOTO  600 

600  A=255 

610  POKE  764,255 

615  PRINT 

620  GOTO  100 

As  you  can  see  at  line  620,  the  program  keeps  looping  back 
to  a  point  near  the  beginning  so  you  can  change  the  hue  and 
luminance  repeatedly.  This  program  is  helpful  for  finding  the 
particular  shades  of  color  you  need  for  your  programs  and  also 
for  learning  about  the  significance  of  hue  and  luminance.  You 
also  might  want  to  try  changing  the  first  value  in  the  SETCOLOR 
statement  (the  register  number,  which  is  shown  here  as  4)  to  a 
different  number  to  see  the  results. 

Important  Variables  in  Cotorbar 

HUE  Hue  Value  of  SETCOLOR  command 

LUM  Luminance  value 

A  Value  of  key  pressed 

Important  Line  Numbers  in  Colorbar 

110-115  Tells  user  the  color  values 

120  Sets  the  color 

1 30-1 80  Gets  keyboard  value 

200-220  Adds  1  to  hue  value 

300-320  Adds  2  to  luminance  value 

400-420  Subtracts  1  from  hue  value 

500-520  Subtracts  2  from  luminance  value 

600-620  Resets  keyboard  value 

73 


SHAPES 

Here  is  a  simple  program  to  teach  you  how  to  draw  certain 
shapes,  like  three-dimensional  cubes  and  two-dimensional 
triangles,  on  the  video  screen.  The  program  will  display  a  menu 
of  four  different  shapes,  plus  an  option  to  end  the  program.  If  you 
select  a  shape,  it  will  be  shown  with  the  vertices  used  to  draw  it.  If 
you  want  to  end  the  program,  simply  select  Option  5  and  the 
program  will  stop.  Figure  5-4  shows  a  sample  rectangle. 

At  the  beginning  of  the  program,  room  is  made  for  the  C$ 
variable,  the  screen  is  cleared,  and  the  menu,  is  displayed: 

5  DIM  C*<1) 

10  GRAPHICS  O 

20  POSITION  7,7 

30  PRINT  "SAMPLE  SHAPES  LIBRARY" 

40  POSITION  9, 10 

50  PRINT  "1.  RECTANGLE" 

60  POSITION  9,11 

70  PRINT    "2.     TRIANGLE" 


VERTICES  AT  40,  40  AND  80,  40  AND 
80,  80  AND  40,  80 


Fig.  5-4.  Sample  screen  from  Shapes. 
74 


80  POSITION  9, 12 

90  PRINT  "3.  BOX" 

100  POSITION  9,13 

110  PRINT  "4,  ABSTRACT" 

120  POSITION  9,14 

130  PRINT  "5.  END" 

The  program  allows  you  to  input  your  choice;  it  then  acts  on 
the  value  of  your  choice  by  going  into  high-resolution  graphics 
mode,  establishing  a  color  for  graphics,  and  going  to  the  appro- 
priate line  number. 

140  INPUT  CHOICE 

145  GRAPHICS  14 

147  COLOR  3 

150  ON  CHOICE  GOTO  200,300,400,500,600 

The  shapes  below  are  rectangle,  triangle,  box,  and 
abstract,  respectively.  As  you  can  see,  the  PLOT  and  DRAWTO 
statements  are  used  to  construct  the  shapes,  while  the  PRINT 
statement  displays  the  vertices  used  to  draw  the  shape. 

200  PLOT  40,40 

210  DRAWTO  QO, 40: DRAWTO  80,80 

220  DRAWTO  40,80: DRAWTO  40,40 

230  PRINT  "VERTICES  AT  40,40  AND  80,40" 

240  PRINT  "AND  80,80  AND  40,80-" 

250  GOTO  700 

300  PLOT  80, 20 

310  DRAWTO  100,80: DRAWTO  60,80 

320  DRAWTO  80,20 

330  PRINT  "VERTICES  AT  80,20  AND  100,80" 

340  PRINT  "AND  60,80." 

350  GOTO  700 

400  PLOT  40,40 

75 


410  DRAWTO  80,40: DRAWTO  80,80 

420  DRAWTO  40,80: DRAWTO  40,40 

430  DRAWTO  60,20: DRAWTO  100,20 

440  DRAWTO  lOO, 60: DRAWTO  80, SO 

445  PLOT  80,40 

450  DRAWTO  100,20: PLOT  40,80 

460  DRAWTO  60,60: DRAWTO  100, 60 

470  PLOT  60,60: DRAWTO  60,20 

480  PRINT  "VERTICES  AT  40,40  AND  80, 40  AND  80,80" 

490  PRINT  "AND  40,80  AND  60,20  AND  100,20  AND  " 

492  PRINT  "100,60  AND  60,60" 

495  GOTO  700 

5O0  PLOT  20,20 

510  FOR  L00P1=1  TO  30 

520  X=INT ( 160*RND ( 1 ) +1 ) 

530  Y=INT ( 160*RND (1 ) +1 ) 

540  DRAWTO  X,Y 

550  NEXT  LOOPl 

560  PRINT  "30  RANDOM  VERTICES" 

570  GOTO  700 

Option  5,  '^End  Program,"  simply  clears  the  screen  and 
ends  the  program. 

600   GRAPHICS  O 
610   END 

On  the  other  hand,  if  you  have  selected  a  shape,  you  can 
draw  another  one  by  pressing  C  and  then  <RETURN>  in  an- 
swer to  the  question  below: 

700   PR I NT "INPUT  C  TO  CONTINUE."; 
710   INPUT  C^ 
720   GOTO  10 


76 


When  you  are  drawing  different  shapes,  you  certainly  don't 
have  to  use  the  vertices  shown  here,  but  you  should  examine  the 
relationships  of  the  vertices  so  you  can  draw  similar  shapes  in 
your  own  programs. 

Important  Variables  in  Shapes 

CHOICE         Input  user's  choice  of  a  shape 

LOOP1  Loop  used  to  make  a  random,  abstract  shape 

X,Y  Coordinates  for  abstract  pattern 

C$  Input  used  to  play  again  or  not 

Important  Line  Numbers  in  Shapes 

5-150  Initialization  to  get  input  from  user  and 

go  to  chosen  shape 
200-250  Draws  rectangle 

300-350  Draws  triangle 

400-495  Draws  a  box 

500-570  Draws  an  abstract  figure 

600-610  Ends  program 

700-720  Asks  for  input  to  continue  or  not 

DRAWER 

For  sketching  graphics  on  the  screen,  as  in  Fig.  5-5,  you  can 
use  this  short  program  that  allows  you  to  use  the  following  keys 
for  the  following  functions: 

KEY  FUNCTION 

V  Move  Drawer  up 

B  Move  Drawer  down 

G  Move  Drawer  left 

H  Move  Drawer  right 

Q  Turn  color  to  cyan 

W  Turn  color  to  orange 

E  Turn  color  to  blue 

R  Go  to  "non-drawing"  mode 

The  program  begins  by  going  into  full-screen  high- 
resolution  graphics  mode  and  assigning  COLOR  2  to  the 
graphics,  while  the  X  and  Y  values  are  set  to  zero: 


77 


Fig.  5-5.  A  drawing  program  example. 


10    GRAPHICS  7+16 
20    COLOR  2 
30    X=0:Y=0 

Then,  the  point  in  the  upper  left-hand  corner  of  the  screen  is 
drawn,  and  the  keyboard  byte  (764)  is  "cleared"  by  poking  a 
value  of  255  into  it: 

40    PLOT  0,0 
100   POKE  764,255 

At  this  point,  the  computer  begins  monitoring  byte  764.  Any 
activity  in  that  byte  will  be  interpreted  by  the  computer  and  acted 
upon  by  the  ATARI: 


no   K=PEEK(764)  :  IF  K=255  THEN  SOTO  110 
120   IF  K=47  THEN  C0L=2: GOTO  400 

78 


130  IF  K=46  THEN  C0L==1:G0T0  400 

140  IF  K=42  THEN  COL=3:GOTO  400 

145  IF  K=40  THEN  COL=0:GOTO  400 

150  IF  K=43  THEN  Y^Y-l:GOTO  200 

160  IF  K=61  THEN  X=X-1:G0T0  200 

170  IF  K=57  THEN  X=X+1:G0T0  200 

180  IF  K-:=21  THEN  Y==Y+l:GOTO  200 

190  GOTO  100 


If  the  user  happens  to  draw  beyond  the  boundaries  of  the 
screen,  the  ATARI  automatically  corrects  the  mistake: 

200  IF  Y<0  THEN  Y=0 

210  IF  Y>95  THEN  Y=95 

220  IF  X<0  THEN  X=0 

230  IF  X>159  THEN  X=159 

In  addition,  if  the  current.color  of  the  cursor  is  0  (blank),  then 
a  special  routine  at  line  500  is  accessed  to  blink  the  drawer 
temporarily.  Otherwise  the  graphics  are  drawn  on  the  screen 
and  the  computer  goes  back  to  the  "keyboard  detect"  sequence. 

235  IF  COL=0  THEN  GOSUB  500 

240  DRAWTO  X , Y 

250  GOTO  100 

400  PLOT  X,Y 

420  COLOR  COL 

430  GOTO  100 

:500  COLOR  2 

;510  PLOT  X,Y 

1520  FOR  DELAY-1  TO  50:  NEXT  DELAY 

530  COLOR  O 

:540  PLOT  X,Y 

1550  RETURN 


79 


When  you  want  to  nnove  around  the  screen  without  drawing, 
go  into  the  "non-draw"  mode.  Othenwise,  select  a  color  of  your 
choice  and  draw  with  that.  This  program  can  be  helpful  when  you 
are  developing  graphics  or  just  experimenting  with  the  potential 
of  the  ATARI  home  computer. 

Important  Variables  in  Drawer 

X,Y  Plot  values 

K  Keyboard  value 

COL  Color  register  value 

DELAY  Used  for  delay  loop 

Important  Lines  in  Drawer 

10-40  Initialization 

1 00-1 90  Gets  keyboard  input 

200-230  Sees  if  drawer  is  going  off  the  edge 

235  If  drawing  in  erase  mode,  computer  makes 

a  point  blink  to  show  where  the  drawer  is. 
240  Does  actual  drawing 

400-430  Changes  drawer  to  desired  color 

500-550  When  in  erase  mode,  makes  a  point 

blink  to  show  position 

GRAPH 

This  program  has  a  practical  purpose  in  that  you  can  use  it 
for  inputting  data  and  having  that  data  displayed  in  line  graph 
form  similar  to  Fig.  5-6.  To  use  this  program,  simply  type  in  the 
number  of  data  items  you  will  be  entering  (up  to  1 0),  then  enter 
each  value,  which  may  range  from  0  to  159.  Once  you  have 
entered  all  of  your  numbers,  the  computer  will  plot  it  on  the 
graph;  you  then  have  the  option  to  draw  another  one. 

First  of  all,  the  program  sets  aside  room  for  its  variables, 
clears  the  screen,  and  asks  how  many  items  there  are  to  be 
entered: 

5  DIM  ITEM (10) 

7  DIM  Y*( 1) 

lO  GRAPHICS  O 

20  PRINT  "HOW  MANY  ITEMS?  (UP  TO  10)" 

30  INPUT  ITEMS 

80 


Fig.  5-6.  A  line  graph. 

Then  a  loop  begins  so  you  can  enter  each  of  the  items: 

40  FOR  L00P1=1  TO  ITEMS 

50  PRINT  "ENTER  AMOUNT  OF  ITEM  ";LOOPX 

60  PRINT  " (UP  TO  159) " 

70  INPUT  I 

80  ITEM(L00P1)=I 

90  NEXT  LOOPl 

Once  you  have  put  in  all  of  your  items,  the  ATARI  computes 
how  much  space  on  the  X-axis  should  be  allocated  for  each  item 
of  data.  It  then  goes  into  high-resolution  graphics  mode  and 
draws  the  two  axes: 

1  00  ADDX=^  I  NT  ( 1 59/ 1 TEMS  > 

] 10  GRAPHICS  14 

120  COLOR  1 

125  PLOT  0,0 


81 


130   DRAWTO  0,159 
140   DRAWTO  159,159 

For  graphing,  the  computer  simply  plots  the  first  point  and 
then  goes  to  each  successive  data  item  you  gave  it  using  the 
DRAWTO  statement.  When  it  has  finished  you  have  your  line 
graph.  The  computer  asks  you  if  you  would  like  another  graph, 
the  answer  to  which  question  causes  it  to  respond  accordingly. 

150  x=o 

160  PLOT  X,159-ITEM(1) 

170  FOR  L00P2=2  TO  ITEMS 

180  DRAWTO  X+ADDX,159-ITEM(LOOP2) 

190  X=X+ADDX 

200  NEXT  LaOP2 

210  PRINT  "WANT  ANOTHER  SRAPH"i INPUT  Y* 

220  IF  Y*="Y"  THEN  RUN 

230  GRAPHICS  O 

You  might  also  try  modifying  this  program  to  support  bar 
graphs  or  line  graphs  that  are  "filled  in"  below  the  graph  lines,  so 
that  a  solid  exists  where  there  was  space  before. 

Important  Variables  in  Graph 

ITEM  (X)        Data  for  items  on  X-axis 
ITEMS  Input  for  number  of  items  on  X-axis 

L00P1  Used  to  ask  for  input  amount  for  above 

I  Input  for  entering  data 

ADDX  Used  when  dividing  up  the  X-axis  so  there 

will  be  enough  room  for  all  pieces  of  data 
L00P2  Used  to  graph  each  amount  on  the  ghd 

X  Number  of  positions  on  X-axis  available 

V$  Sees  if  you  want  to  draw  another  graph  or  not 

Important  Line  Numbers  in  Graph 

20-90  Gets  information  for  the  graph 

100  Gets  amount  to  add  to  the  value  for  the  X-axis 

each  time  a  new  point  in  drawn 

82 


120-140  Draws  both  axes 

150-160  Graphs  first  item 

1 70-200  Graphs  other  items 

210-230  Checks  to  see  if  you  want  to  draw  another  graph 

These  programs  have  only  begun  to  touch  upon  the 
ATARI'S  graphics  capabilities,  but  they  do  give  you  an  idea  of  the 
uses  for  this  particular  aspect  of  the  computer.  You  might  also 
want  to  try  expehmenting  with  the  ATARI  graphics  commands, 
working  out  program  ideas  that  you  could  use  for  learning 
geometry,  helping  in  business,  or  creating  educational  software 
for  younger  people.  Whatever  your  purpose,  the  ATARI  graphics 
capabilities  should  serve  you  well— as  long  as  you  use  the 
available  memory  efficiently. 


83 


Chapter  6 


Games 


The  ATARI  home  computers  are  probably  best  known  for  their 
ability  to  support  high-quality  games.  These  games,  most  of 
them  "arcade-type/"  have  provided  hours  of  entertainment  for 
home  computer  owners— especially  considering  how  much 
better  computer  games  are  over  home  video  game  systems. 

In  this  chapter,  we  will  be  taking  a  look  at  three  game 
programs.  Because  the  BASIC  language  isn't  as  fast  and  effi- 
cient as  the  machine  language  in  which  most  arcade  games  are 
written,  these  games  are  not  "arcade-type."  Nevertheless,  they 
are  still  entertaining  games  which  will  teach  you  more  about  how 
BASIC  may  be  used. 

GUESS  MY  NUMBER 

The  first  game,  a  very  basic  one  at  that,  is  called  "Guess  My 
Number/'  and  it  involves  trying  to  guess  a  random  number  the 
computer  has  generated  and  stored  in  its  memory.  The  number 
can  range  from  1  to  100.  Once  you  have  guessed  the  number, 
the  computer  will  tell  you  how  many  guesses  it  took  your  deduc- 
tive reasoning  to  find  the  number. 

The  program  itself  is  extremely  simple,  since  it  uses  primar- 
ily the  RND  and  the  INPUT  statements.  The  first  line  creates  a 
string,  YN$,  that  can  hold  one  character: 

1  DIM    YN^d) 


85 


Then  the  screen  is  cleared  and  the  variable  which  records 
how  many  tries  have  been  made  is  set  to  1 : 


2     GRAPHICS  0 
5     TIMES=1 

The  random  number  is  then  generated  by  the  RND  state- 
ment, and  the  computer  asks  the  user  to  guess  the  number. 

1 0  NUMBER= I NT ( 1 00*RND ( 1 >  + 1 ) 
20  PR I NT "WHAT  IS  MY  NUMBER? 
30    INPUT  GUESS 

Once  the  guess  has  been  input,  the  computer  checks 
whether  it  is  correct,  too  low,  or  too  high.  If  the  guess  is  greater 
than  100,  It  returns  to  the  question  at  line  20.  Otherwise,  the 
computer  will  check  the  condition  of  the  number  and  go  to  the 
appropriate  line  number: 

40  IF  GUESS > 100  THEN  20 

50  IF  GUESS >NUMBER  THEN  80 

60  IF  GUESS< NUMBER  THAN  110 

70  IF  GUESB=NUMBER  THEN  140 

Once  it  reaches  the  line  number,  the  computer  takes  ap- 
propriate action  for  whatever  the  guess  might  be.  If  the  guess  Is 
too  high,  the  computer  goes  to  this  routine: 

80    PRINT  "MY  NUMBER  IS  LOWER" 
90    TIMES=TIMES+1 
100   GOTO  20 

If  the  guess  is  too  low: 

110   PRINT  "MY  NUMBER  IS  HIGHER" 
120   TIMES=TIMES+1 
130   GOTO  20 

Finally,  If  the  guess  is  correct,  the  computer  tells  you  how 
86 


many  guesses  it  took  you  to  find  the  correct  number.  It  then  asks 
whether  you  would  like  to  play  again  or  not,  taking  appropriate 
action  on  your  response: 

140  PRINTsPRINT 

150  PRINT"YOU  GOT  MY  NUMBER  RIGHT  IN  "; TIMES; "  GUESSES. " 

160  PRINT"DO  YOU  WANT  TO  PLAY  AGAIN?" 

170  INPUT  YN* 

180  IF  YN*="Y"  THEN  2 


This  completes  the  program.  When  you  are  playing  it,  try  to 
see  how  few  guesses  it  takes  you  to  guess  the  computer's 
number.  A  sample  screen  is.  shown  in  Fig.  6-1. 


YN$ 
TIMES 


Important  Variables  in  Guess  My  Number 

Input  to  see  if  player  wants  to  play  again  or  not 
Used  to  count  number  of  guesses  the  player 
needed  to  guess  the  correct  number 


WHAT  IS  MY  NUMBER'? 

?50 

MY  NUMBER  IS  LOWER 

WHAT  IS  MY  NUMBER'? 

? 


Fig.  6-1.  Guess  My  Number. 


87 


NUMBER       A  random  number  between  1  and  100 
GUESS  The  player's  Guess 

Important  Line  Numbers  in  Guess  My  Number 

10  Gets  random  number 

20-30  Gets  player's  guess 

40-70  Checks  to  see  what  player  guesses 

80-130  Tells  player  whether  number  is  higher 

or  lower  than  his  guess 

SIMON  SAYS 

This  program  is  a  memory  game,  since  you  must  remember 
a  sequence  of  colors  and  sounds  the  computer  gives  you.  You 
select  the  difficulty  level  (how  long  the  colors  and  sounds  are 
shown  and  played)  along,  with  the  number  of  colors  and  sounds 
you  must  remember.  The  computer  shows  and  plays  the  colors 
and  sounds,  and  then  you  tell  it  what  you  remember.  Afterwards 
you  may  play  again,  perhaps  to  try  a  more  difficult  level,  or  stop 
the  game. 

To  set  up  the  game,  1  programmed  the  computer  to  set  up 
the  variables  RAN  and  RESPONSES  and  clear  the  screen: 

10    DIM  RAN(25) 

20    DIM  RESPONSE* (1) 

50    GRAPHICS  O 

The  computer  then  asks  how  many  screens  were  wanted. 
The  more  screens  there  were,  the  harder  it  will  be  to  remember 
all  of  them. 

hO  POSITION  4,9 

70  PR I NT "HOW  MANY  SCREENS  DO  YOU  WISH  TO  TRY?" 

72  POSITION  4, 13 

75  INPUT  TIMES 

The  computer  is  then  programmed  to  ask  what  difficulty 
level  is  desired.  The  difficulty  level  determines  what  period  of 
time  the  color  and  sound  will  be  shown  and  played.  The  higher 


88 


the  number  the  longer  the  period,  and  thus  the  easier  it  is  to 
remember  the  sequence. 

80  POSITION  4, 15 

85  PR I NT "ENTER  DIFFICULTY  LEVEL  (1-3)" 

90  POSITION  4,16 

lOO  PR I NT "LEVEL  1  IS  THE  MOST  DIFFICULT" 

110  INPUT  LEVEL 

1 20  DELAY=LEVEL* 1 00 

The  computer  then  clears  the  screen  and  begins  the  loop  to 
select  the  random  colors: 

130   GRAPHICS  O 

140   FDR  L00P1=1  TO  TIMES 

Once  the  loop  is  running,  random  numbers  (between  1  and 
4)  are  selected,  the  screen  is  cleared,  and  the  computer  access- 
es the  appropriate  combination  of  color  and  sound  in  accor- 
dance with  the  randomly  chosen  number. 

200   RAN ( LOOP 1 ) = I NT ( RND ( 1 ) *4 ) + 1 

210   GRAPHICS  O 

220   ON  RAN ( LOOP 1)  GOTO  300,400,500,600 

The  routines  for  the  four  different  colors  and  sounds  are  as 
follows: 

300  SETCOLDR  2,2,8 

310  SOUND  0,100,14,15 

320  GOTO  700 

400  SETCOLOR  2,12,8 

410  SOUND  0,50,8,15 

420  GOTO  700 

500  SETCOLOR  2,8,8 


89 


510  SOUND  0,50,14,15 

520  GOTO  700 

600  SETCOLOR  2,4,5 

610  SOUND  0,250,14,15 

The  routine  at  line  700  delays  for  a  short  while  so  the  color 
and  sound  will  remain  on.  Then  the  computer  clears  the  sound 
currently  being  played  and  checks  to  see  if  it  should  play  another 
sound  and  show  another  color.  If  so,  it  continues  the  L00P1 .  If 
not,  it  goes  to  line  800. 

700  FOR  L00P2=^l  TO  DELAY;  NEXT  L00P2 

710  SOUND  0,0,0,0 

720  IF  LG0P1=TIMES  THEN  800 

730  NEXT  LOOPl 

At  line  800,  the  computer  begins  the  loop,  which  asks  you 
which  color  was  on  the  screen.  It  will  continue  asking  you  this 
until  you  have  responded  with  the  correct  answer  to  all  of  the 
colors.  Once  it  has  finished  this  loop,  it  will  move  on  to  the  rest  of 
the  program. 

800  FDR  L00P3=1  TO  TIMES 

810  GRAPHICS  O 

820  POSITION  6,6 

830  PRINT" 1.  ORANGE" 

835  POSITION  6,7 

840  PRINT"2.  GREEN" 

845  POSITION  6,8 

850  PRINT"3.  VIOLET" 

855  POSITION  6,9 

860  PRINT"4-  RED" 

870  POSITION  4,11 

880  PR I NT "WHICH  WAS  COLOR  SCREEN  NUMBER  " ; L00P3 

890  INPUT  ANSWER 

90 


900   IF  ANSWER<>RAN(L00P3)  THEN  1000 
910   NEXT  LQOP3 

The  remainder  of  the  program  either  congratulates  the 
player  for  answering  all  of  the  questions  correctly  or  tells  the 
player  he  input  a  wrong  answer.  After  a  win  or  lose  has  been 
called,  the  computer  asks  if  the  player  would  like  to  play  the 
game  again,  so  that  it  may  take  appropriate  action. 

?15   PRINT: PRINT"GOOD  JOB ! " 

920   PRINT: PRINT 

930   PRINT"DO  YOU  WANT  TO  PLAY  AGAIN?" 

940   INPUT  RESPONSE* 

950   IF  RESPONSE*="Y"  THEN  RUN 

960   END 

970   POSITION  6, 14 

::010  PR  INT  "WRONG,  ,  .YOU  MISSED  THAT  COLOR," 

;.020  GOTO  920 

This  game  Is  good  for  working  for  memory  and  you  should 
1  ry  to  see  just  how  many  colors  and  sounds  you  can  retain  in  your 
mind.  You  also  might  want  to  try  increasing  the  difficulty  level  for 
added  challenge  in  the  game. 

Important  Variables  in  Simon  Says 

RAN(X)  Random  number  (1  through  4)  corresponding 

to  a  color 

RESPONSES     Your  response  to  whether  you  want  to  play 

again  or  not 
l"IMES  Input  for  number  of  screens  to  try 

LEVEL  Input  for  level  of  difficulty 

L00P1  Loop  to  display  the  random  colors 

DELAY  Used  to  delay  loop  in  accordance  with  the 

choice  picked  when  "Enter  difficulty  level 

(1-3)"  is  asked 
L00P2  Delay  loop 

LOOPS  Asks  for  a  certain  number  of  answers, 

equivalent  to  the  value  of  the  variable  TIMES 


91 


ANSWER  Input  for  the  color  the  player  thinks  is  correct 

Important  Line  Numbers  in  Simon  Says 

70-100  Gets  input  from  player 

120  Sets  length  of  delay  used  when  showing  each 

color 
140-730  Displays  a  certain  number  of  colors 

equivalent  to  the  variables  TIMES 
200  Gets  a  random  color  (SETCOLOR  value 

ranging  from  1  to  4) 
220  Goes  to  randomly  selected  line  number 

700  Delay  to  display  color  on  the  screen  for  a 

certain  length  of  time 
710  Turns  off  sound 

800-910         Asks  play  what  each  color  was 
915  Tells  player  he  got  everything  right 

920-960         Asks  "Do  you  want  to  play  again?'" 
1010  Tells  player  that  he  did  not  guess  a  color 

correctly 

BLACKJACK 

Blackjack  or  "21 "  is  a  popular  card  game  in  which  you  try  to 
beat  the  "dealer"  (the  ATARI)  by  getting  a  score  as  close  to  the 
number  of  21  as  possible,  without  going  over.  You  can  also  get  a 
jack  and  an  ace,  which  is  an  automatic  win  called  "blackjack" 
(Fig.  6-2).  Of  course,  the  dealer  could  get  blackjack  or  get  closer 
to  21  than  you  after  you  decide  not  to  "take  another  hit"  (get 
another  card).  Simply  try  to  get  as  close  to  21  as  you  can,  but 
avoid  a  "bust,"  which  occurs  when  you  go  over  21.  Keep  in  mind 
that  the  values  for  the  cards  are  the  same  as  their  face  value ;  the 
jack,  king,  and  queen  have  a  value  of  1 0,  while  the  ace  can  have 
values  of  11  or  1. 

"Blackjack"  begins  by  setting  up  the  variables  for  the  pro- 
gram and  clearing  the  screen: 

10  DIM  RAN<52):DIM  DEALT (52) 

15  DIM  CARD(52):DIM  A*(2) 

20  GRAPHICS  O 

30  M0NEY=100 


92 


The  computer  then  "shuffles"  the  cards  by  assigning  each 
card  a  unique  value.  This  routine  takes  a  while,  since  it  must  read 
data  from  lines  2000  through  2030  (also  shown  below)  and  make 
certain  that  the  card  it  selects  for  variable  is  unique— so  you 
won't  wind  up  with  a  deck  of  15  queens. 

40  PR I NT "SHUFFLING" 

45  NM=0 

50  FOR  L00P3=1  TO  52 

60  DEALT (L00P3)=0 

70  NEXT  L00P3 

100  FOR  L00P1=1  TO  52 

110  RAN (LOOPl ) =INT (52+RND ( 1 ) +1 ) 

120  FOR  LaOP2=l  TO  51 

140  IF  RAN (LOOPl )=DEALT(L00P2)  THEN  110 

150  NEXT  L00P2 


YOU  HAVE  100  DOLLARS. 

WHAT  !S  YOUR  BET'^ 

?50 

YOUR  HAND  TOTALS  18 

WITH  0  ACES 

THE  DEALER  HAS  10  +  ';* 


DO  YOU  WANT  A  HIT'? 


Fig.  6-2.  Blackjack. 


93 


160   DEALT (LOOPl ) =RAN(L00P1 ) 

170   FOR  L00P4=1  TO  RAN (LOOPl) 

180   READ  CARD 

190   NEXT  LOOP4 

200   CARD (LOOPl ) =CARD 

210   RESTORE 

220   NEXT  LOOPl 

2000  DATA  11,10,10,10,10,9,8,7,6,5,4,3,2 

2010  DATA  11,10,10,10,10,9,8,7,6,5,4,3,2 

2020  DATA  11,10,10,10,10,9,8,7,6,5,4,3,2 

2030  DATA  11,10,10,10,10,9,8,7,6,5,4,3,2 

The  computer  clears  the  screen,  determines  that  the 
number  of  aces  the  player  an(j  the  dealer  have  is  zero,  and  then 
checks  to  see  if  there  are  enough  cards  with  which  to  play.  If 
there  are  not.  the  computer  goes  to  a  reshuffling  routine  at  line 
1700. 

300   GRAPHICS  O 

303   PA=0:DA=0 

305   IF  NM>37  THEN  1700 

In  order  for  a  person  to  know  how  much  money  is  available 
for  betting,  the  computer  shows  the  amount  of  money  the  player 
has.  then  accepts  a  bet  from  the  player: 

310  PR I NT "YOU  HAVE  "; MONEY;"  DOLLARS." 

320  PRINT 

330  PR I NT "WHAT  IS  YOUR  BET?" 

340  INPUT  BET 

350  IF  BET>MONEY  THEN  330 

360  MONEY=MONEY-BET 

The  computer  gives  the  player  his  hand  of  cards,  totals  their 
value,  and  then  tells  the  player  the  value  of  his  cards  and  how 
many  aces  he  has. 

94 


:j70  nm=nm+i 

:;80  phand=card  (nm)  +card  (nm+1 ) 

390  if  card (nm) ^11  then  pa=pa+1 

400  IF  CARD(NM+1)=11  tHEN  PA=PA+1 

405  NM=NM+2 

410  IF  PHAND=21  THEN  1000 

420  IF  PHAND>21  THEN  GOSUB  1100 

430  PR I NT "YOUR  HAND  TOTALS  " ; PHAND 

440  PRINT"WITH  ";PA;'*  ACES." 

The  computer  then  does  the  same  for  the  dealer: 

500  DHAND=C ARD ( NM ) +CARD ( NM+ 1 ) 

510  IF  CARD (NM) =11  THEN  DA=DA+1 

520  IF  CARD(NM+1)=11  THEN  DA=DA+1 

525  Nri+2 

530  IF  DHAND=21  THEN  1200 

540  IF  DHAND>21  THEN  GOSUB  1300 

550  PRINTiPRINT 

560  PR I NT "THE  DEALER  HAS:" 

570  PRINT  CARD<NM);"  +  ?" 

600  PRINTiPRINT 

The  player  is  then  asked  if  he  wants  a  hit.  If  he  does,  he  is 
given  another  card  and  the  value  of  the  hand  is  checked  again.  If 
he  does  not  want  anothercard  (i.e.  "stand"),  the  computer  will  go 
to  the  routine  at  line  750.  Figure  6-2  outlines  the  dialogue  up  to 
this  point. 

610  PRINT"DO  YOU  WANT  A  HIT?" 

620  INPUT  A* 

630  IF  A*<>"Y"  THEN  750 

640  PHAND=PHAND+CARD  <  NM ) 

650  NM=NM+1 

95 


660  IF  CARD<NM-1)=11  THEN    PA=PA+1 

670  IF  PHAND>21  THEN  GOSUB  llOO 

680  PR I NT "YOUR  HAND  TOTALS  "; PH AND 

690  PRINT"WITH  •*;PA;"  ACES." 

700  GOTO  600 

If  the  player  decides  to  stand,  the  computer  will  show  the 
dealers  hand  and  will  compare  the  value  of  the  dealer's  hand 
with  the  value  of  the  player's  hand,  taking  appropriate  action  for 
whatever  the  condition  might  be.  For  example,  if  the  dealer 
requires  a  hit.  the  computer  will  give  him  one.  If  the  dealer  has  a 
good  hand,  the  computer  will  go  to  the  routine  at  line  1400, 
showing  that  the  dealer  has  won. 

750  PRINTsPRINT 

760  PR I NT "THE  DEALER'S  HAND  TOTALS  " ; DHAND 

770  PR I NT "HE  HAS  ";DA;"  ACES." 

780  IF  PHAND>DHAND  THEN  900 

790  IF  DHAND=PHAND  THEN  900 

800  IF  DHAND >PHAND  THEN  14O0 

900  IF  DHAND >16  THEN  1500 

If  the  computer  decides  to  go  to  line  91 0,  the  dealer  receives 
a  hit,  checks  his  hand,  then  goes  back  to  the  previous  routine  to 
see  if  he  requires  another  hit. 

9 1 0  DHAND=DHAND+CARD ( NM ) 

920  IF  CARD<NM)=11  THEN  DA=DA+1 

930  NM=NM+1 

940  IF  DHAND >21  THEN  GOSUB  1300 

950  GOTO  760 

In  the  unlikely  event  that  the  player  is  dealt  a  blackjack,  the 
computer  informs  that  player  that  he  has  indeed  acquired  a 
21  -point  hand,  allowing  him  to  win  triple  his  bet  money— and  the 
game. 

96 


1000  PR I NT: PR I NT "BLACKJACK" 

1010    BET=BET^t3 

1020  MONEY^MONEY+BET 

1030  GOTO  1600 


If  the  player's  cards  have  a  value  over  21,  the  aces  are 
reduced  from  11  to  1  by  the  computer,  as  shown  below: 


1100  IF  PA<1  THEN  1400 
1110  PA=PA-1 
1120  PHAND=PHAND-10 
1130  RETURN 

Of  course,  the  dealer  can  also  get  a  blackjack.  The  routine 
below  allows  for  that  possibility,  and  also  includes  the  equivalent 
of  the  "ace  routine"  shown  above. 

1200  PR I NT: PR I NT  "THE  DEALER  HAS  21." 

1205  IF  MONEY=0  THEN  1900 

1210  GOTO  1600 

13O0  IF  DA<1  THEN  1500 

1310  DA=DA-1 

1320  DHAND=DHAND-10 

1330  RETURN 

Finally,  here  are  the  routines  for  winning  and  losing  the 
game,  along  with  the  lines  which  ask  the  player  if  he  would  like  to 
play  the  game  again.  The  last  few  lines  are  for  the  purpose  of 
"reshuffling"  the  deck,  in  case  the  cards  remaining  are  too  few  in 
number: 

1400  PRINT: PR I NT "YOUR  HAND  TOTALS  " ; PHAWn 
1410  PR I NT "THE  DEALER  HAS  " ; DHAND 
1415  PRINT"YOU  LOSE." 
1417  IF  MONEY=0  THEN  1900 
1420  GOTO  1600 

97 


1500  PR I NT: PR I NT "YOUR  HAND  TOTALS  " ; PHAND 

1510  PR I NT "THE  DEALER  HAS  " ; DHAND 

1520  PRINT"YOU  WIN!" 

1530  M0NEY=M0NEY+BET*2 

1600  PRINT: PRINT"DO  YOU  WANT  TO  PLAY  AGAIN?" 

1610  INPUT  A* 

1620  IF  A«="Y"  THEN  300 

1630  END 

1700  PR I NT: PR I NT "SORRY,  I  MUST  RE -SHUFFLE. " 

1705  MONEY=MONEY+BET 

1710    GOTO    45 


RAN(X) 

DEALT(X) 

CARD(NM) 

A$ 

MONEY 

L00P3 

L00P1 

CARD 

LOOP2 

L00P4 

PA 

DA 

BET 

PHAND 

DHAND 


Important  Variables  in  Blackjack 

Random  number  to  read  off  a  random  amount 

of  data 

Used  to  make  sure  that  the  same  RAN(X) 

has  not  been  used  twice 

Value  of  Xth  card  in  shuffled  deck 

Input  to  see  if  player  wants  to  play  again 

Amount  that  player  has  in  dollars 

Sets  DEALT(X)  values  to  zero 

Loop  for  card  shuffling  routine 

Card  values  read  from  data 

Makes  sure  that  same  RAN(X)  is  not  used  twice 

Used  to  read  data 

Number  of  aces  the  player  has 

Number  of  aces  the  dealer  has 

Amount  that  player  bets 

Total  value  of  player's  hand 

Total  value  of  dealers  hand 


Important  Line  Numbers  in  Blackjack 

10-45  Initialization 

50-70  Clearing  DEALT(X) 

100-200  Entire  shuffling  routine 

110  Get  random  value 

120-150         Makes  sure  value  has  not  been  used  before 


98 


160  Stores  random  value  for  use  in  120-150 

1 70-1 90  READS  random  number  of  card  values 

200  Gets  value  of  card 

305  Goes  to  line  1700  if  there  are  not  enough 

cards  with  which  to  play 
31 0-340         Gets  players  bet 
350  Makes  sure  the  player  doesn't  bet  more  than 

he  has 
370-440         Gives  player  his  hand,  counts  number  of  aces, 

totals  its  value,  see  if  it's  over  21  or  21  even 
500-570  Does  same  for  the  dealer 

600-630  Sees  if  player  wants  a  hit 

640-690  Gives  player  a  hit,  checks  value  of  hand 

700  uoes  to  ask  if  player  wants  a  hit  again 

750-900  Sees  if  dealer  needs  a  hit, or  if  he  has  17or  over 

910-950  Gives  dealer  a  hit,  checks  his  hand,  goes  back 

to  see  if  he  needs  another  hit 
1 000-1 030     Tells  player  he  got  blackjack,  asks  if  he  wants  to 

play  again  after  adding  to  his  money 
1 1 00-1 1 30     This  routine  checks  to  see  if  the  player  has  any 

aces  since  he  has  over  21 .  Aces  are 

therefore  changed  from  1 1  to  1 
1 200-1 21 0      Informs  the  player  that  the  dealer  dealt  himself 

21 ,  sees  if  player  lost  all  of  his  money  or  not 
1300-1330      Ace  routine  for  the  dealer 
1400-1420      Informs  the  player  that  he  has  lost 
1 500-1 530      Informs  the  player  that  he  has  won  and  adds 

his  bet  to  the  money  he  already  has 
1600-1620      Sees  if  player  wants  to  play  again. 

Now  that  we  have  taken  a  look  at  just  about  every  type  of 
program  we  can  make  on  the  ATARI  home  computer,  and  are 
knowledgeable  in  the  BASIC  language  and  how  it  can  be 
utilized,  we  can  complete  our  learning  and  programming  experi- 
ence. Let's  see  how  you  can  make  your  own  ideas  for  your  own 
programs  and  then  develop  them  into  actual,  working  pieces  of 
software. 


99 


Chapter  7 


Creating  Your  Own  Programs 

Up  to  now  you  have  been  entering  and  using  the  programs  in  this 
book,  discovering  the  various  keywords  used  in  creating  pro- 
grams, and  finding  out  new  uses  for  your  computer.  Along  the 
way.  you  have  probably  devised  some  program  ideas  of  your 
own.  and  you  might  have  modified  the  programs  in  this  book  for 
your  own  purposes  or  experimentation.  If  you  have,  this  is  an 
excellent  first  step  to  becoming  "your  own  programmer."  If  you 
havent.  you  might  want  to  try  to  develop  your  programming  skills 
now  by  reviewing  some  of  the  programs  you  have  typed  in  and 
making  some  changes,  no  matter  how  insignificant. 

The  main  point  is  that  helping  you  acquire  the  ability  to 
create  your  own  programs  is  one  of  the  main  purposes  of  this 
book.  You  should  learn  at  least  some  of  the  BASIC  keywords  of 
the  ATARI  and  know  the  proper  way  to  put  the  words  together  to 
make  a  usable  program.  More  importantly,  you  should  learn  the 
technique  behind  creating  a  program.  This  last  aspect  has  not 
yet  been  covered,  so  we  will  explore  it  in  this  final  chapter. 

THE  USEFUL  COMPUTER 

Because  one  of  the  most  important  aspects  of  creating  a 
program  is  coming  up  with  an  original  program  idea,  we  should 
first  look  at  the  different  types  of  programs  so  you  can  find  an 
idea  which  might  fit  into  one  of  these  types.  Reading  about  these 


101 


various  kinds  of  programs  will  probably  make  it  easier  for  you  to 
develop  an  idea  for  a  program. 

The  first  (and  probably  most  obvious)  type  of  program  for 
the  600XL  or  800XL  computer  system  is  entertainment 
software.  Their  high-resolution  graphics,  excellent  sounds,  and 
relatively  large  memory  make  them  excellent  machines  on 
which  to  play  games.  There  have  already  been  a  wide  variety  of 
computer  games  developed  for  the  ATARI  home  computers, 
and  here  are  some  types  that  have  already  come  into  existence 
for  the  600XL  and  800XL. 

Games  of  Chance.  These  might  be  called  "gambling  games," 
since  they  involve  themes  that  would  usually  be  found  in  Las 
Vegas.  'One-Armed  Bandit"  (a  slot  machine),  Blackjack,  and 
Keno  are  just  a  few.  Computers  are  excellent  for  playing  card 
games  and  games  of  chance,  especially  the  600XL  or  800XL 
with  color  graphics  (useful  for  displaying  cards,  slot  machines,  or 
dice),  sounds  (for  indicating  winning  or  losing),  and  large  mem- 
ory (for  storing  a  great  deal  of  information). 

Adventures.  An  adventure  is  a  game  in  which  you  play  the 
part  of  a  person  in  a  strange  situation  (such  as  on  a  deserted 
island,  on  a  faraway  planet,  or  in  a  haunted  house)  who  must  use 
skill  and  luck  to  retrieve  treasures,  stay  alive,  or  (usually)  both. 
Adventures  are  enjoyable  because  they  involve  strategy  and  wit, 
and  they  can  put  you  in  a  fantasy  world  which  only  your  computer 
and  your  imagination  can  produce. 

Arcade  Games.  These  are  certainly  the  most  popular  of  all 
kinds  of  games,  since  they  combine  exciting  graphics,  sounds, 
and  fast  action  to  produce  a  game  requiring  fast  reflexes— but 
little  intelligence.  One  look  at  any  magazine  which  includes  the 
ATARI  home  computers  in  its  subject  matter  will  show  you  that 
there  are  many  arcade  gamescurrently  available forthe  ATARI. 

Board  Games.  Some  games  (like  'Xife"  from  Milton  Bradley 
and  "Monopoly"  from  Parker  Brothers)  commonly  played  on 
boards  can  be  adapted  for  use  on  the  computer.  In  fact,  some 
games  exist  for  other  computers  which  let  the  computer  play 
against  you  in  a  board  game. 

Logic  Games.  Games  which  require  a  lot  of  logical  thinking 
(like  ''Mastermind,  '  which  requires  you  to  pick  out  a  pattern  of 
four  colored  pegs)  are  popular  on  computers,  since  program- 
mers and  other  people  who  enjoy  computers  are  usually  logical 
folks  who  enjoy  using  their  mind  to  solve  problems. 

This  covers  most  of  the  different  kinds  of  games  which  are 

102 


available  for  the  600XL  and  800XL  computer  systems.  Another 
type  of  software  which  give  the  600XL  or  800XL  a  useful  appli- 
cation besides  entertainment  is  educational  software. 

Learning  from  a  computer  is  an  extremely  exciting  possibil- 
ity. Children  (and  adults)  can  discover  foreign  languages,  ad- 
vanced mathematics,  and  excellent  spelling  habits  by  utilizing  a 
computer  able  to  show  them  rules,  test  them,  quiz  them  with 
repetitive  questions  and  have  an  infinite  amount  of  patience  and 
encouragement.  Human  teachers  certainly  can  do  a  lot  better 
teaching  some  subjects  than  computers  can,  but  for  repetitive 
teaching  or  education  which  doesn't  require  a  lot  of  creativity  or 
customized  training  by  the  educator,  computers  are  excellent  for 
instructing  people  in  a  wide  variety  of  subjects. 

There  are  several  types  of  programs  available  today  which 
can  help  many  young  people  and  adults  in  learning  about  math, 
science,  spelling,  or  practically  any  other  subject. 

Computer  Literacy.  One  of  the  best  things  that  computers  like 
the  600XL  or  800XL  can  teach  is.  naturally,  how  to  work  with 
computers.  Programs  can  teach  how  to  use  the  BASIC  lan- 
guage, how  to  use  the  keyboard,  what  the  different  parts  of  a 
computer  are,  how  to  use  a  word  processor,  and  what  program- 
ming is  involved  in  producing  graphics  and  sounds.  As  I  have 
mentioned  before,  experience  is  a  much  better  teacher  than  a 
book  (including  this  one),  or  a  program,  but  you  need  to  learn  the 
basic  information  somewhere— which  is  why  a  book  and/or  a 
program  is  often  helpful  when  you  are  learning  about  your  com- 
puter. 

SAT  Instruction.  The  infamous  Scholastic  Aptitude  Test 
(SAT)  is  one  of  the  most  important  criteha  used  by  colleges 
considering  high  school  students  for  admittance.  Because  of 
this,  the  SAT  is  a  matter  of  great  importance  to  many  young 
people.  This  is  why  programs  which  assist  young  people  with  the 
SAT  tend  to  be  very  popular.  In  addition,  computers  can  teach 
other  tests,  such  as  the  PSAT,  Achievement  Tests,  or  tests  at 
the  college  level. 

Drilling  and  Practice.  The  most  popular  kind  of  educational 
program  is  the  "drilling  and  practice"  program,  which  teaches  a 
person  something  through  repeated  instruction  and  testing.  The 
subject  could  be  mathematics  (addition,  subtraction,  multiplica- 
tion, geometry),  science  (formulae,  science  in  history),  or  any 
other  subject  you  can  imagine. 

Educational  software  is  commonly  used  in  the  home,  but 

103 


some  schools  are  starting  to  purchase  these  types  of  programs 
as  supplements  to  their  teaching  curricula.  At  home,  another 
useful  type  of  software  available  for  the  600XL  or  800XL  is  the 
home  finance  program.  Keeping  track  of  financial  records  is  an 
excellent  application  for  computers;  the  600XL  or  800XL  is  able 
to  help  you  plan  your  budgets,  balance  your  checkbook,  make 
investments,  and  manage  your  whole  "portfolio"  and  finances 
for  your  household.  Being  a  computer,  the  600XL  or  800XL  is  a 
"whiz  at  math"  with  a  significant  amount  of  memory;  the  pro- 
grams using  these  qualities  to  keep  track  of  home  finances  will 
be  very  useful  indeed. 

Even  though  the  600XL  or  BOOXL  can  be  used  with  the 
popular  AtariWriter  word  processor  from  Atari,  Inc.,  there  are 
additional  word  processing  programs  available,  which  you  will 
see  advertised  in  most  general  computer  magazines.  They  may 
have  some  extra  features  you  might  find  desirable  that  Atari- 
Writer  doesn't  have.  Besides  the  other  WP  programs,  there  are 
"supplemental"  programs  made  for  AtariWriter  and  other  word 
processors  which  check  the  spelling  of  your  documents.  You 
can  then  use  your  word  processor  for  form  letters  and  other 
business-related  needs  without  having  to  worry  about  misspell- 
ings. 

Finally,  another  application  made  possible  through 
software  development  for  the  600XL  and  BOOXL  Is  the  use  of 
other  computer  languages.  Currently  the  600XL  and  800XL  not 
only  let  a  user  work  with  BASIC,  but  also  have  the  software  to 
support  other  languages  (such  as  machine  language  and 
LOGO).  You  can  learn  more  about  the  languages  of  computers 
(for  there  are  many  of  them)  and  find  ways  in  which  programs 
can  operate  faster  and  more  efficiently. 

The  demand  for  software  with  the  600XL  or  800XL  has  been 
very  high,  but  there  are  always  more  programs  or  applications 
you  can  create  (by  making  your  own  programs)  that  people  will 
find  useful.  Here  is  where  a  great  opportunity  for  you  comes  in. 
You  can  make  software  for  the  600XL  or  BOOXL  and  sell  it  to 
other  people.  You  could  be  one  of  the  "suppliers  of  software"  for 
the  many  who  will  be  wanting  it.  On  the  other  hand,  you  might 
want  to  program  the  software  yourself  and,  instead  of  selling  it 
yourself,  find  a  software  publisher  to  mass  produce  and  sell  it  for 
you.  This  is  exactly  the  subject  of  the  next  section,  in  which  we'll 
explore  ways  to  create  programs  with  your  machine  — and 
perhaps  later  make  money  with  your  600XL  or  800XL  computer. 

104 


GETTING  AND  DEVELOPING  THE  IDEA 

I  have  written  a  large  number  of  nationally  marketed  pro- 
grams myself,  so  people  sometimes  ask  me,  "What  is  the  hard- 
est part  about  making  a  program?"  I  reply  to  their  surprise, 
"Getting  the  idea.''  This  might  not  be  an  absolutely  true  state- 
ment, since  debugging  a  program  is  also  extremely  difficult,  but  I 
do  find  that  getting  and  developing  an  Idea  for  a  program  is  often 
one  of  the  most  difficult  parts  of  programming. 

When  you  are  trying  to  think  of  an  idea  for  a  program,  you 
should  think  of  who  is  going  to  be  using  it.  Naturally,  if  it  is  for  your 
own  use,  you  should  make  only  what  you  need.  If  you  are  going 
to  be  making  a  program  for  other  people  to  use,  however,  you'll 
probably  want  to  think  of  an  original  idea.  This  can  be  very 
difficult  indeed,  since  there  are  already  a  great  many  programs 
available  on  the  market.  The  best  way  to  create  an  original  idea 
foraprogram.  though,  istothinkofaneed  which  someone  might 
want  "filled  '  by  a  computer.  Here  are  a  few  types  of  people, 
along  with  a  sample  program  each  might  find  useful: 

POTENTIAL  USER  USEFUL  PROGRAM  IDEA 


Teachers  Software  to  keep  track  of  grades 

Church  Program  to  keep  records  of 

Administrators  donations 

Students  Programs  to  help  with  SAT  test 

Small  Businessman  Inventory  records  program 

Audiophile  Program  to  keep  track  of  records 

Remember  also,  especially  if  you  are  a  young  person  who 
enjoys  video  games,  that  games  are  not  the  only  programs  you 
can  create  for  the  600XL  or  800XL.  Some  kinds  of  programs  you 
could  try  to  Include  word  processors,  communications  programs, 
utility  (programmer  helper)  programs,  and  almost  anything  else 
you  can  devise.  Just  keep  this  in  mnd.the  more  original,  useful, 
and  needed  your  program  is,  the  more  popular  it  will  be. 

If  you  are  going  to  create  a  program  simply  for  your  own 
purposes,  then  teach  yourself  more  about  computers,  think  of 
the  various  features  your  computer  possesses  and  how  to 
exploit  them,  and  experiment  with  BASIC  keywords  and 
techniques  you  have  not  used  before.  You  can  learn  how  to 
program  like  a  professional,  since  professionals  build  their 

105 


knowledge  on  their  own  experience. 

The  best-selling  programs  are  attractive  to  large  numbers  of 
people;  however,  you  might  want  to  make  a  program  for  a  more 
narrow  group  of  people— like  your  family,  your  friends,  or  stu- 
dents who  attend  a  nearby  school. 

Let's  assume  that  we  need  to  create  a  program  for  an 
introductory  computer  class.  In  order  to  get  the  idea  for  this 
program,  we  think  about  what  would  impress  or  interest  a  class 
about  computers.  One  idea  that  comes  to  mind  is  a  short,  simple 
program  which  lets  the  computer  introduce  Itself,  gets  the  user's 
name,  and  then  greets  the  user  by  name.  This  is,  of  course,  a 
very  basic  program,  but  for  this  example  it  will  suffice. 

At  this  point,  we  need  to  develop  the  program  idea.  De- 
velopment involves  the  expans/on  of  your  idea,  paying  attention 
to  minute  details,  and  sometimes  drawing  a  flowchart  of  your 
program.  Not  all  of  the  specifics  you  write  down  about  your 
program  may  make  it  into  the  final  product.  You  should  have 
some  flexibility  in  your  programming,  but  you  should  try  to  stick 
to  your  original  ideas  as  much  as  possible. 

As  far  as  flowcharting  is  concerned,  we  aren^t  going  to  use  a 
flowchart  in  our  programming  example  because  the  program  is 
too  short  and  simple  to  require  one.  More  complex  programs  do 
require  flowcharts,  but  you  can  probably  get  away  without  them 
until  you  are  making  programs  larger  than,  say,  forty  lines  long. 
Still,  flowcharting  is  good  logical  exercise  and  an  excellent  habit 
to  aquire. 

A  flowchart  is  basically  a  picture  of  a  program's  "flow"— the 
sequence  of  processes  by  which  it  works.  A  flowchart  shows, 
with  words  and  shapes,  the  main  parts  of  a  program  and  how 
they  interact  with  one  another.  There  are  five  main  symbols, 
shown  in  Fig.  7-1,  which  make  up  most  flowcharts. 

START/STOP  oval.  This  indicates  the  beginning  and  end  of  a 
program. 

Rectangle.  Most  of  a  program's  functions  are  represented 
within  a  rectangle,  which  represents  unconditional,  "process" 
action.  Such  statements  as  PRINT,  READ,  clear  the  screen,  and 
variable  assignments  can  be  represented  within  the  rectangle, 
along  with  most  other  statements  not  including  INPUT  END 
and  IF-THEN. 

Diamond.  This  figure  represents  conditional  action,  i.e.,  de- 
cisions made  by  the  computer.  IF-THEN  statements  are  con- 
tained within  diamonds.  There  are  two  arrows  coming  out  of  the 

106 


t 

1 


STOP/START 
OVAL 


PROCEDURE 
RECTANGLE 


DECISION 
DIAMOND 


INPUT 
PARALLELOGRAM 


FLOW 
ARROWS 


Fig.  7-1.  Flowchart  symbols. 

diamond  rather  than  just  one,  as  with  other  statements.  One 
arrow  represents  where  program  execution  will  "flow"  If  a  condi- 
tion turns  out  to  be  false,  while  another  arrow  is  for  a  true 
condition. 

Parallelogram.  For  statements  involving  INPUT,  use  this 
figure. 


107 


Arrows.  The  arrows  in  a  flowchart  represent  the  "flow"  of  a 
program.  Execution  can  travel  only  in  the  direction  of  the  arrow. 

Another  important  part  in  developing  a  program  is  forming 
the  essential  details  relating  to  the  program.  For  example,  some 
of  the  details  relating  to  our  simple  example  in  this  chapter 
include: 

1)  The  program  will  have  to  introduce  itself  to  the  person. 
This  will  involve  clearing  the  screen  and  PRINTing  sev- 
eral lines. 

2)  When  the  computer  asks  the  user's  name,  an  INPUT 
statement  will  be  required  to  get  the  input. 

3)  Once  the  computer  knows  the  person's  name,  it  will 
have  to  use  the  person's  name  (now  represented  by  a 
variable)  along  with  some  PRINT  statements  to  greet 
that  person. 

If  you  are  making  a  more  complex  program,  such  as  one 
involving  business  or  word  processing,  your  "details"  can  be  far 
more  general,  such  as,  "The  computer  will  have  to  be  able  to 
search  for  words  within  a  document,  so  I  must  program  it  to  store 
a  'search  string'  and  look  for  it  within  the  document,"  or,  "In  the 
middle  of  the  program,  the  values  will  have  to  be  stored  on  the 
disk  to  insure  they  are  not  lost."  As  far  as  our  program  is  con- 
cerned, however,  we  have  created  an  idea  for  it  and  we  know  the 
fundamentals  parts  of  the  program  which  must  be  coded. 

PROGRAMMING 

The  actual  programming  will  be  a  lot  easier  if  you  have  a 
flowchart  at  hand  when  you  are  making  a  large  program.  What- 
ever the  size  of  your  project,  you  should  have  the  details  of  the 
program  written  on  paper,  as  well  as  a  good  idea  of  what 
keywords  and  techniques  you'll  be  using  In  the  program.  If  you 
are  making  a  large  program,  try  breaking  it  down  into  smaller 
sections,  and  program  these  one  at  a  time.  In  addition,  try 
checking  each  of  these  individual  sections  as  you  go  along  to 
save  yourself  time  in  the  debugging  process.  Getting  rid  of 
problems  now  will  be  much  easier  than  searching  through  your 
entire  program  later  for  the  bugs.  Last,  be  creative,  innovative, 
and  as  efficient  as  possible  when  you  are  programming,  since 
these  three  elements  are  essential  to  creating  a  quality  program. 

108 


Our  "simple  sample"  won't  be  hard  to  make.  First  of  all,  we 
need  to  construct  the  computer's  introduction  as  follows: 

10    REN  INTRODUCTORY  CLASS  PROGRAM 

20    PRINT"HI  THERE.   I  AM  AN  ATARI  COMPUTER.   I  AM  NEW" 

30    PR I NT "AROUND  HERE,  SO  I  WAS  HOPING  YOU  COULD  TELL" 

The  first  line  is  a  REMark  to  show  the  purpose  of  the 
program.  In  lines  20  and  30,  the  computer  introduces  itself.  At 
this  point,  we  can  make  the  part  which  allows  INPUT  from  the 
user  so  that  he  can  identify  himself. 

40  INPUT  "WHAT     IZ    YOUR    NAME*';NS 

Finally,  the  computer  greets  the  person  by  name: 

50    PRINT"HELL0  THERE,  ":PRINT  N* 

Don^t  be  alarmed  if  you  see  a  few  errors  in  the  program 
above.  This  is  intentional  since  we  need  to  see  how  we  go  about 
debugging  a  program  in  the  next  section. 

DEBUGGING 

The  most  grueling  and  boring  step  of  making  a  program,  as 
well  as  the  most  exciting  and  rewarding,  is  the  debugging  pro- 
cess. It  is  boring  because  you  have  to  search  through  your 
program  to  find  any  problems  or  potential  errors,  and  it  is  exciting 
because  you  will  feel  a  surge  of  victory  every  time  you  conquer  a 
bug.  Looking  for  those  elusive  bugs  involves  testing  every  pos- 
sible input  the  user  could  give  the  computer,  making  the  program 
do  everything  it  is  capable  of  doing,  and  trying  your  best  to  make 
the  program  fail.  You  will  probably  be  somewhat  cautious  while 
testing  your  program,  since  nobody  likes  to  find  more  problems 
to  solve.  Do  not  simply  give  up,  however,  assuming  that  you 
have  conquered  all  the  bugs.  You  must  give  your  program  a  real 
workout  to  assure  top  performance.  Spend  all  the  time  you  can 
with  it.  since  there  may  still  be  one  problem  which  a  user  could 
discover  later.  This  could  be  rather  embarassing. 

Our  program  has  a  few  problems  in  it.  First  of  all,  it  should  do 
the  following: 

HI  THERE-   I  AM  AN  ATARI  COMPUTER.   I  AM  NEW 

109 


AROUND  HERE,  SO  I  WAS  HOPING  YOU  COULD  TELL 
ME:  WHAT  IS  YOUR  NAME?  TIM  KNIGHT 
HELLO  THERE,  TIM  KNIGHT 

However,  if  you  run  the  program,  you  will  find  it  does  this: 

HI  THERE.   I  AM  AN  ATARI  COMPUTER,   I  AM  NEW 
AROUND  HERE,  SO  I  WAS  HOPING  YOU  COULD  TELL 
WHAT  IZ  YOUR  NAME?  TIM  KNIGHT 
HELLO  THERE, 
TIM  KNIGHT 

As  you  can  tell,  we  have  a  few  mistakes  which  need  cor- 
recting. To  begin  with,  the  third  line  of  text  is  not  right.  Change 
the  WHAT  12  YOUR  NAME  to  ME:  WHAT  IS  YOUR  NAME.  Also, 
the  name  is  phnted  on  the  second  line  rather  than  on  the  same 
line  as  HELLO  THERE.  To  correct  this,  you  can  either  put  a 
semicolon  after  the  end  quote  following  HELLO  THERE,  or  you 
can  simply  eliminate  the  second  PRINT  statement  in  line  50.  The 
line  would  then  read  PRINT'HELLO  THERE,  "N$. 

This  program  wasn't  very  difficult  to  debug  since  it  was  so 
small,  but  most  programs  are  rather  tedious  and  mind-boggling 
when  you  are  debugging  them.  Remember  these  important 
things  when  you  are  debugging  any  program: 

1 )  For  a  program  that  requires  input,  try  inputting  anything 
you  can  imagine.  If  the  program  wants  numbers,  give  it 
letters,  names,  symbols,  and  anything  else  you  can 
type.  If  a  computer  wants  you  to  use  the  "6"  key  to  move 
the  cursor  right,  keep  pressing  it  to  see  if  an  error  will 
occurwhen  the  cursortriesto  move  off  the  boundariesof 
the  screen. 

2)  Try  every  incorrect  method  of  using  a  program  to  make 
sure  that  it  is  foolproof. 

3)  Get  other  people  to  use  your  program.  They  are  much 
better  judges  of  it  than  you  are.  They  can  also  provide 
helpful  constructive  criticism  and  comments  on  the  pro- 
gram, and  can  alert  you  to  problems  existing  in  the 
software. 


110 


Once  you  have  finished  programming  and  debugging  a 
piece  of  software,  you  should  write  some  documentation  (in- 
structions) for  it.  Simply  type  out  the  basic  facts  a  person  needs 
to  know  to  use  your  program,  and  mention  some  ways  in  which 
the  program  can  be  used.  If  you  are  doing  the  program  for  a 
software  company,  you  should  make  the  documentation  itself  an 
excellent  work.  Since  you  probably  won't  be  doing  that  for  a 
while,  there's  no  need  yet  to  concentrate  on  writing  anything  but 
the  essentials. 

MAKING  PROGRAMS  AND  MONEY  WITH  YOUR  ATARI 

Many  people  (including  a  large  number  of  young  people) 
have  made  something  of  a  business  out  of  writing  software  for 
computers.  In  fact,  being  a  professional  programmer  can  be  a 
very  profitable  job,  even  if  you  just  work  out  of  your  home 
producing  one  or  two  programs  a  year.  Until  now  the  software 
market  has  been  pretty  well  saturated  for  most  computers,  but 
newly  introduced  machines  offer  an  excellent  opportunity  for 
programmers  to  write  more  software  for  a  variety  of  applications. 
This  opportunity  exists  with  the  600XL  or  800XL,  and  you  could 
make  yourself  quite  a  lot  of  money  with  your  computer  through 
software  development. 

There  are  a  number  of  ways  to  make  money  with  computers 
(see  Fig.  7-2).  Writing  software  reviews  for  computer  mag- 
azines, writing  articles,  creating  computer-related  books, 
teaching  computer  classes,  or  serving  as  a  computer  consultant 
to  a  person  or  a  business  are  just  a  few.  However,  the  particular 
way  of  making  money  with  your600XLor800XLI  am  discussing 
now— making  software— probably  offers  more  rewards  and  ex- 
citementthananyothercomputer-relatedbusinessopportunity. 

The  profits  of  making  software  come  in  a  vahety  of  forms. 
First  of  all,  writing  a  program  will  inevitably  put  you  in  the  position 
of  being  an  ''exterminator,"  since  you'll  have  to  seek  out  and 
destroy  all  the  bugs  in  the  program  you  create.  The  profit  from 
this,  though,  is  the  good  feeling  you  have  when  you  finally 
remove  a  bug  from  your  program.  Until  you  actually  find  and  fix  a 
difficult  mistake  in  one  of  your  own  creations,  you  won't  be  able 
to  understand  the  feeling  of  accomplishment  your  achievement 
can  give  you.  After  you  have,  you'll  want  to  keep  searching  and 
stamping  out  those  bugs,  no  matter  how  frustrating  and  time- 
consuming  they  might  be. 


111 


CO 

LU 

> 
LU 


CO 

LU 


O 


cn 
< 


^N 


<D 

C 

o 

TO 


112 


Another  profit  which  comes  from  making  programs,  natur- 
ally, is  the  money  you  receive.  If  you  give  your  program  to  a 
software  publisher,  which  is  probably  the  best  decision,  you  will 
receive  a  certain  royalty  for  every  copy  of  your  program  that  is 
sold.  For  instance,  assume  you  have  made  a  great  home  finance 
manager  program  that  is  being  sold  for  $30  per  copy.  Assume 
again  that  you  receive  25  percent  of  the  wholesale  price  of  your 
program  (about  $15),  making  your  royalty  $3.75.  If  10,000 
600XL  or  800XL  users  purchase  your  program,  this  would  result 
in  a  profit  of  $37,500  for  you— which  is  an  excellent  compensa- 
tion for  your  work  as  a  programmer.  Of  course,  you  shouldn't 
always  expect  royalties  this  high,  but  some  people  have  made 
millions  of  dollars  on  their  programs.  (One  person  I  know  made  a 
million  with  one  arcade  game.)  Many  other  programmers  have 
six-figure  incomes  for  their  work.  The  more  popular  the  600XLor 
800XL  becomes,  and  the  better  your  program  is  (in  addition  to 
how  good  your  software  publisher  is),  the  more  money  you  are 
likely  to  receive  for  your  program. 

The  method  by  which  you  create  a  program  was  discussed 
earlier  in  this  book,  but  here  are  a  few  more  pieces  of  advice 
when  creating  your  program  for  the  software  market; 

1 )  Make  the  documentation  as  complete  and  easy  to  un- 
derstand as  possible.  This  will  assist  the  novice  600XL 
or  800XL  user  in  utilizing  your  program. 

2)  Test  the  program  as  thoroughly  as  you  can  before 
sending  it  to  a  software  publisher.  Have  other  people 
use  your  program,  and  get  their  constructive  criticism  of 
how  your  program  can  be  improved,  what  problems 
exist  in  the  program,  and  what  can  be  done  with  the 
documentation  to  make  the  program  easier  to  use  as 
soon  as  a  person  purchases  it. 

3)  When  thinking  up  your  original  idea  for  the  program, 
make  it  as  original  as  possible  and  as  attractive  to  a 
buyer  as  you  can.  Imagine  yourself  in  the  position  of 
someone  who  is  looking  at  a  software  package  and  has 
not  tried  the  program,  but  who  wants  to  find  something 
that  is  entertaining,  educational,  or  very  useful. 

The  important  step  now  is  to  get  in  contact  with  the  software 
publishers  who  interest  you,  see  if  they  like  your  idea  for  a 

113 


program,  and  then  get  to  work  on  the  actual  software.  Develop  it 
and  have  the  publisher  market  it  for  you, 

THE  FUTURE  OF  COMPUTERS 

Since  computers  have  changed  so  much  over  the  past  few 
years,  it's  difficult  to  say  what  will  be  happening  to  the  ATARI 
600XL,  ATARI  800XL  other  home  computers,  and  the  field  of 
high  technology  in  general.  However,  I  do  have  some  sugges- 
tions as  to  what  will  probably  be  occurring  over  the  next  couple  of 
years  in  these  areas.  These  predictions  may  prove  useful  to  you 
in  some  way. 

Firstof  all, computers  aren'tlikely  todrop  inpricemuch  more 
than  they  already  have.  When  personal  computers  were  intro- 
duced, they  cost  $2,000  or  more,  but  a  few  years  later  the  price 
fell  to  $500,  $300,  and  then  to  $1 00  or  less.  Unfortunately,  since 
the  price  fell  so  much,  the  cheapest  personal  computers  became 
poorly  constructed  toys.  The  price  increased,  along  with  the 
quality,  back  to  $200.  At  this  price,  personal  computers  were 
affordable  and  still  of  a  quality  high  enough  to  satisfy  the  con- 
sumer. Prices  stayed  around  $200  to  $700  for  home  computers, 
but  the  features  began  to  increase.  The  result,  up  to  now,  has 
been  the  600XL  or  800XL  computer— low  in  price,  but  with  a  lot 
of  fantastic  features  which  would  have  cost  you  thousands  of 
dollars  a  few  years  ago.  This  trend  is  likely  to  continue.  You'll 
probably  see  more  inexpensive  and  feature-packed  computers 
appearing,  in  addition  to  low-cost  extra  peripherals  and  software 
being  made  available  for  the  600XL  or  800XL. 

Another  important  trend  is  that  software  is  getting  easier  to 
use  and  more  practical.  This  will  result  in  computers  being  made 
even  more  useful  than  they  already  are,  with  programs  being 
written  in  such  easy  to  understand  terms  that  even  the  novice  will 
be  able  to  utilize  all  kinds  of  software.  A  good  example  is  Atari- 
Writer,  which  is  a  program  made  simple  to  use  by  extensive 
prompting  from  the  computer. 

Finally,  computers  will  be  expanding  into  what  I  like  to  call 
probots,  which  is  short  for  personal  robots  (Fig.  7-3).  Personal 
robots  are  an  extension  of  the  home  computer,  with  all  the 
powers  of  a  computer  like  the  600XL  or  800XL,  but  with  the 
additional  utility  of  motion  and  the  power  to  manipulate  objects. 
Soon  your  600XL  or  800XL  computer  may  be  able  to  control  a 
personal  robot  and  make  it  guard  your  house,  watch  for  and 
extinguish  fires,  and  entertain  guests.  The  personal  robotics 

114 


Fig.  7-3.  A  probot  of  the  future. 


revolution  is  likely  to  be  as  influential  as  the  personal  computer 
revolution,  so  it  will  be  exciting  to  see  what  developments  occur 
in  that  new  field. 

Your  600XL  or  800XL  computer  is  a  powerful  tool  and  a 
wonderful  extension  of  yourown  mind.  Use  it  like  atool,  and  let  it 
entertain  you,  make  you  more  efficient,  and  keep  your  records  in 
order.  The  personal  computer  revolution  has  brought  a  lot  of 
changes,  including  this  inexpensive  and  powerful  system  called 
the  600XL  or  800XL.  Learn  to  program  it  well  through  your  own 
experiences,  and  use  it  as  often  as  you  can  for  as  many  varied 
applications  as  you  can  find— to  discover  how  useful  and  enjoy- 
able the  ATARI  600XL  or  800XL  computer  can  truly  be. 


115 


Glossary 


Array— A  set  of  variables  set  apart  from  one  another  by  numeri- 
cal subscripts.  Examples:  A(1 ),  B$(20),  C(50).  Before  you  use 
an  array,  you  must  set  it  up  with  the  DIM  statement. 

ASCII— A  standardized  coding  system  which  assigns  corres- 
ponding code  numbers  to  letters,  numbers,  and  symbols. 

Binary— The  number  system  computers  use,  composed  of  zeros 
and  ones. 

Bit— The  smallest  unit  of  information  the  ATARI  can  hold.  Bit  is 
short  for  binary  digit,  since  a  bit  can  be  either  one  or  zero. 

Bug— A  problem  in  a  program. 

Byte— The  basic  unit  of  information  in  the  computer.  A  byte  is  a 
unit  of  memory  equal  to  eight  bits. 

Command— A  word  you  give  to  the  ATARI  computer  so  that  it  will 
carry  out  some  function. 

Disk— A  piece  of  Mylar  plastic  on  which  you  can  permanently 
store  programs,  data,  and  other  kinds  of  information. 


116 


Disk  drive— The  device  you  use  to  store  and  retrieve  programs 
and  information.  The  disk  drive  is  faster  and  more  efficient 
than  the  tape  recorder. 

Display— The  television  set,  monitor,  screen,  video  display,  or 
whatever  you  want  to  call  the  device  that  shows  you  the 
information  of  the  computer  on  a  cathode-ray  tube. 

Edit— To  modify  or  change  information. 

Error— A  mistake  in  a  program,  or  in  one  of  your  commands  to 
the  computer. 

Execute— To  begin  running  (using)  a  program. 

Graphics— Visual  information  in  the  form  of  pictures  such  as  bar 
graphs,  spaceships  in  a  game,  or  a  piece  of  "computer  art" 
formed  by  the  ATARI'S  advanced  high-resolution  graphics. 
The  ATARI  can  also  support  low-resolution  graphics,  which 
aren't  as  well-defined  but  can  be  displayed  in  a  wider  variety 
of  colors. 

Hardware— The  electronic  components  of  a  computer  system, 
such  as  the  printer,  the  keyboard,  the  microprocessor,  and  so 
on.  Hardware  can  be  physically  damaged  if  mistreated,  so 
treat  your  ATARI  with  care. 

Integer— A  whole  number  without  a  decimal  part.  5,  2,  6,  and 
2,034  are  integers,  while  2.53245  is  not. 

Joystick- The  device  usually  used  in  games  to  move  your  "man" 
around  the  screen.  Joysticks  are  attached  to  the  keyboard 
and  can  be  used  to  indicate  direction.  Because  of  this,  they 
are  commonly  used  in  arcade-type  games. 

K— The  name  given  to  designate  a  certain  amount  of  memory. 
One  K  is  equal  to  1,024  bytes.  The  ATARI  600XL  has  16K, 
which  equals  16,384  bytes  of  memory. 

Keyboard— The  part  of  the  ATARI  Computer  System  on  which 
you  can  type  information  for  the  computer  to  use. 


117 


Machine  Language— An  extremely  fast  means  by  which  the  com- 
puter can  carry  out  programs,  since  machine  language  is  the 
actual  "language  of  the  computer"— as  opposed  to  BASIC, 
which  must  be  interpreted  by  the  computer  and  translated  by 
the  ATARI  into  its  own  machine  language. 

Memory— The  computer's  information  storage  center. 

Peripheral— An  extra  device  for  your  computer,  such  as  a  printer, 
a  modem,  a  disk  drive,  or  a  joystick. 

Printer— The  device  which  gives  you  a  "hardcopy"  (printed  ver- 
sion) of  information,  such  as  a  letter,  a  listing  of  a  program,  or 
an  essay. 

Reserved  word— A  word  which  can  be  used  only  by  the  ATARI. 
You  cannot  use  it  for  variable  names  or  uses  other  than  giving 
the  ATARI  commands.  For  example,  you  couldn't  let  a  vari- 
able named  LIST  equal  1 0  since  the  name  LIST  is  used  by  the 
ATARI  to  list  out  programs.  It  is  a  reserved  word. 

Software— The  programs  the  ATARI  uses.  When  you  turn  the 
computer  off,  any  software  (programs)  in  the  computer  will  be 
erased.  In  order  to  save  programs  for  later  use,  store  them 
onto  a  disk  or  a  cassette  tape. 

String— A  series  of  characters  and/or  symbols  assigned  to  a 
variable  called  astring.  String  variables  are  represented  by  a 
dollar  sign  ($)  following  them.  A$,  Y1  $,  and  UU$  are  all  string 
variables,  which  can  equal  such  things  as  "123,"  "YOU 
THERE,"  and  "ATARI." 

Text— Words  and  letters  you  can  understand,  such  as  this  sen- 
tence. 


118 


Index 


BASIC  statements  and  functions  are  indexed  by  first  usage  in  a  pro- 
gram. 


Adventure.  102 

Assignment  (implied  LET)  statement, 

9 
ATARI,  voices  of,  12 

B 

Basic  Skills  Check-Up  program.  52 
Blackjack  program.  92 

C 

Calculator  program,  49 
CLOG  function.  52 
Colorbar  program,  71 
COLOR  statement.  15 
Computer  literacy,  103 
COS  function,  52 

D 

DATA  statement.  10 
Debugging,  109 
DEG  statement,  50 
DIM  statement.  21 
Documentation,  113 
Drawer  program,  77 
DRAWTO  statement.  15 


END  statement,  22 


Flowchart,  106 
Flowchart  symbols,  107 
FOR-TO-NEXT  statement,  8 
French  Tutor  program.  35 

G 

Games,  arcade,  102 
Games,  board,  102 
Games,  logic,  102 
Games  of  chance.  102 
Geometry  program,  56 
GOSUB  statement.  9 
GOTO  statement,  2 
GRAPHICS  statement.  7 
Graph  program.  80 
Greater-than  operator,  14 
Guess  My  Number  program,  85 

H 

High  resolution.  71 
History  Quiz  program.  27 
Hue.  71 

I 

Idea  development,  105 
IF  .  .  .  THEN  statement,  9 
INPUT  statement,  2 
INT  function,  19 


119 


L 

Length  Converter  program.  62 
Less-than  operator,  14 
LOGO.  104 
Low  resolution,  69 
Luminance,  71 

M 

Machine  language,  104 
Making  money,  1 1 1 
Metric  system,  62 
Musical  notation,  21 
Music  Creator  program,  20 


NEW  command,  v 
Notation,  musical,  21 


ON 


GOTO  statement,  8 


REM  statement,  2 
RESTORE  statement,  7 
RETURN  statement,  10 
RND  function,  19 


Scholastic  Aptitude  Test  (SAT),  103 

SETCOLOR  statement,  72 

Shapes  program,  74 

Simon  Says  program,  88 

SIN  function.  52 

Software,  educational,  103 

Software,  entertainment,  102 

Song  Library  program,  7 

Sound  Effects  Library  program,  17 

Sound  Maker  program,  12 

SOUND  statement,  8 

Spelling  Tester  program,  32 

SQR  function,  51 

States  and  Capitals  program,  40 


PEEK  function,  13 
PLOT  statement,  15 
POKE  statement,  13 
POSITION  statement, 
PRINT  statement,  2 
Probot.  114 
Programming,  108 
Publishers,  software. 

R 

READ  statement.  8 


114 


Tangent  (computed),  52 
Testing,  program,  113 
Time-delay  loop.  18 
Timer,  memory  location  of.  53 

U 

Unequal-to  operator,  22 

V 

VAL  function,  22 


120 


Edited  by  Stephen  Moore